Unity/개발연습

[Unity] 포트폴리오 개발일지 - 8

민트초밥 2022. 5. 21. 11:30

대화 시스템 구현

대화 시스템을 구현하기 위해 캔버스에 대화창을 띄우는 작업부터 진행했다.

화면에 입력되는 대사는 한번에 나오지 않고 타이핑을 하는 것 같은 효과를 적용했다. 

 

 

 

 

스크립터블 오브젝트를 사용해서 대사를 저장해둘까 했지만 추가나 수정이 번거로울 것 같아서 Json을 사용해서 저장했다.

Json 데이터 예시

 

 

 

json 데이터를 파싱하는 부분에서 시간이 오래걸렸는데, 위의 사진에 dialogues 부분 때문이었다. JsonUtility.ToJson() 메서드를 사용해서 json 데이터를 deserialize 해야했는데 2차원 배열은 할수가 없었다. 그래서 방법을 찾다가 Newtonsoft JSON 라이브러리의 JsonConvert.DeserializeObject()를 사용해서 해결할 수 있었다.

string json = Resources.Load<TextAsset>(NPCPath).ToString();
npcData = JsonConvert.DeserializeObject<JsonNPCData>(json);

 

 

 

대사가 출력되는 도중에 화면을 클릭할 경우 현재 대사를 완성된 상태로 출력되게 만들었다.

마지막 대사가 출력된 이후에는 화면을 클릭해도 반응이 없고 활성화되는 close 버튼을 클릭해야만 대화창을 종료하도록 만들었다. 이 기능은 없어질 예정이지만 선택지 기능 때문에 일단 만들어 뒀다.

 

 

반응형