관리 메뉴

도드넷

도드의 유니티 API#2 - 유니티 WAIT 대사 만들기와 텍스트 GUI 본문

창고/나만의 게임 제작

도드의 유니티 API#2 - 유니티 WAIT 대사 만들기와 텍스트 GUI

도드! 2016. 8. 28. 02:01
반응형





산적 : 거기너 멈춰 난 강도다 가진거 다내놔.


그렇게 오늘은 스토리텔링을 위한 대사 시스템 만들어봤습니다.

개인적으로 여기에 대화선택지 UI 추가해서 자유도를 높이고 싶네요.


1. 꺼져 (전투)

2. 우리 같이 강도짓하실래요? (영입?)

3. 다 드리겠습니다. (봐줌)

4. 꺄아아악 (50%확률로 강도도 놀라서 도망 혹은 전투)


도드의 유니티 API


#2


- 대사 만들기 텍스트 GUI


유니티 대사 시스템 텍스트 GUI 과 시네마틱은 다음과 같은 방법으로 만들었습니다.


1. 데미지 GUI랑 마찬가지로 PREFAB 오브젝트를 맹급니다.

이 오브젝트는 텍스트 GUI를 포함하고 있으며 스크립트에서 이걸 토대로 새로운 대사 오브젝트를 복사-생성하고 위로 쓰윽 올라가는 속도와 대사가 더해지게 됩니다. 한편 반복문에서는 대사를 말하는놈과 대사 사이의 Y차이 값을 구해서 일정수준이면 속도를 0으로 만들어서 머리위에서 멈추게 만듭니다.


1. 핵심 스크립트 :: 복사 생성 Instantiate


Dialogs[i] = Instantiate(prefab_dialogdisplay) as GameObject;


반드시 집합형으로 받아서 반복문에서 모든 텍스트를 검사하고 멈출수있게 합니다.

사실 대화문 특성상 하나만들고 하나지우고 하나만들고 하는식이라 필요없을것 같지만 중복사용도 충분히 가능한 컨텐츠니 집합형으로 ㄱㄱ dmg gui랑 마찬가지


2. 대사 설정


        dialog_text = Dialogs[i].GetComponentsInChildren<Text>();
        string newt = "Hey, stop there!";
        dialog_text[0].text = newt;
        dialog_text[1].text = newt;


밝은 환경에서 하얀색 글자가 잘 안보이는것을 방지하기 위해 그림자 효과를

넣기위해 텍스트 GUI를 2개 포함하고 있습니다.


프리뺍으로 만든 오브젝트아래에 위치한 두 Text 컴포넌트는 유니티의 매우 스마트한 스크립트중 하나인 GetComponentsInChildren로 집합 형태로 순서대로 가져와서 쓸수있습니다.


아!


그리고 WAIT 이라는 게임 스크립팅에서 빼놓을 수 없는 기능도 한번 배워서 써봤는데요. 대사와 대사 사이를 구현하는데 이용했네요.


3. 유니티 WAIT


Ienumerator 함수이름() ...
yield return new WaitForSeconds(5); // WAIT!
- 실행 : StartCoroutine(함수이름());


WAIT을 사용하고싶은 함수를 선언할떄 리턴값을 항상써오던 void가 아닌 Ienumerator 을 사용해주고 wait 부분은

yield return new WaitForSeconds(초)로 써줍니다. 그리고 해당 함수를 초기 호출할시 StartCoroutine이라는 함수로 호출해야 wait을 쓸수있는듯 합니다.


하.. 유니티 너무 사랑한다.


다 있어 다 돼있고 그냥 어떻게 하는지만 알면 자신만의 무언가를 창조가능.

게임에 대한 감각은 있으니까 됬고 문제가 있다면 외부 요소같은 그림, 음악, 효과 같은건데 그림은 내가 도트아트로 하면될것같구 음악은..흠...









반응형
Comments