글 작성자: Doublsb

깃허브 이슈에 선택지 시스템 관련 요청이 와서, 스스로 생각했을 때도 필요한 기능이었으므로 업데이트했다.

 


1. DialogSelect/DialogSelectItem Class

 

DialogData 하위에서 객체로 참조할 수 있도록 새 클래스를 만들었다.

내용은 사실상 Dictionary<string, string>의 하위호환이다.

 

DialogSelectItem은 string의 Key와 Value가 존재한다.

 

DialogSelect에서는 이를 리스트로 만들어 참조하고, 추가한 순서대로 선택지를 표시한다.

 

그럼 왜 Dictionary로 구현하지 않았느냐? 나중에 JSON 데이터 입출력을 위해 시리얼화될지도 모르기 때문이다.

SerializableDictionary 에셋 같은 걸 쓰면 간단하지만, 에셋스토어는 다른 에셋에 대한 의존성이 없는 것을 권장한다.

 

 

2. DialogAsset 프리팹에 Selector 오브젝트 추가

 

그냥 흔한 수직 레이아웃이다. 아이템 개수에 따라서 세로 길이가 자동으로 늘어나는 식.

내부 구현은 UGUI Dropbox에서 Item을 템플릿에 생성하는 것과 비슷하게 구현했다.

 

적용 화면은 아래와 같다.

 

 

3. DialogManager에 Select 메서드, Result 변수 추가

 

선택지를 클릭하면 누른 인덱스에 따라 Result에 키가 저장되는 방식.

public이기 때문에 Callback에서 선택지를 참조하면 된다.

 

아래와 같은 방식으로 사용한다.

 


사실 구현보단 도큐먼트 쓰는 게 더 귀찮았다.

도큐먼트 원본 워드 파일이 날아가서 pdf에서 내용을 복붙하고 다시 만들었기 때문이다 (...)

 

백업을 생활화하자.

 

해당 커밋 보러가기

반응형