Documentation index for AI agents

Dictionary(GS2 UIKit for Unity) 샘플

GS2 UIKit for Unity 를 사용한 GS2-Dictionary 기능 구현 샘플 소개

도감 기능을 구현합니다.

리포지토리

https://github.com/gs2io/gs2-uikit-for-unity-sample/tree/main/Dictionary

GS2-Deploy 템플릿

https://github.com/gs2io/gs2-uikit-for-unity-sample/blob/main/Dictionary/initialize_dictionary_template.yaml

프로젝트 내용

img.png

프로젝트를 열면 위와 같은 화면이 됩니다.

img_1.png

실행하면 A~E 까지 5체의 캐릭터 입수 상황이 표시됩니다. 지금은 어떤 캐릭터도 입수하지 않았기 때문에, 전부 그레이아웃되어 있습니다.

img_2.png

화면 하단에 각 캐릭터를 입수하는 버튼을 배치하고 있습니다. 우선, “A” 버튼을 눌러 봅시다.

img_3.png

“A” 캐릭터를 입수함으로써 컬러 표시가 되고, 입수 시간이 표시됩니다. 마찬가지로 “C” 버튼을 눌러 봅시다.

img_4.png

“C” 캐릭터도 컬러 표시가 됩니다.

프로젝트 해설

img_5.png

씬의 계층 구조에 주목해 주세요.

Canvas/DictionaryWindow

img_6.png

Gs2DictionaryNamespaceContext

이 GameObject 이하의 노드에서 다룰 네임스페이스를 지정하고 있습니다.

img_7.png

이번에는 dictionary-0001 을 지정하고 있습니다.

Canvas/DictionaryWindow/Dictionary/…/Content

img_8.png

Gs2DictionaryEntryModelListFetcher

NamespaceContext 에서 지정된 네임스페이스의 엔트리 모델 목록을 취득합니다.

Gs2DictionaryEntryModelList

Gs2DictionaryEntryModelListFetcher 로 취득한 엔트리 모델을 지정된 프리팹에 할당하여 생성합니다. Maximum Items 에는 프리팹을 생성할 최대 개수를 지정합니다.

img_9.png

이번에는 자식 노드에 있는 Entry 를 프리팹으로 지정하고 있습니다. 프리팹으로 지정된 GameObject 가 씬 내에 있는 경우, 해당 GameObject 는 비활성화되고, 그 외에 Maximum Items 로 지정된 수만큼 GameObject 가 생성됩니다.

Canvas/DictionaryWindow/Dictionary/…/Content/Entry

img_10.png

Gs2DictionaryEntryModelContext

이 GameObject 이하의 노드에서 다룰 엔트리를 지정하고 있습니다. 컨텍스트의 내용은 Gs2DictionaryEntryModelList 에 의해 할당됩니다.

Gs2DictionaryEntryModelFetcher

Gs2DictionaryEntryModelContext 에서 지정된 엔트리의 모델을 취득합니다.

Gs2DictionaryOwnEntryFetcher

Gs2DictionaryEntryModelContext 에서 지정된 엔트리 모델의 자신의 엔트리를 취득합니다.

Gs2DictionaryEntryEnabler

Entry 의 로드 상태에 따라 입수 일시를 표시하는 GameObject 를 활성화합니다. 엔트리를 입수하지 않은 경우에는 Loaded 상태가 되지 않으므로, 입수한 경우에만 활성화됩니다.

Gs2DictionaryEntryModelEnabler

EntryModel 의 로드 상황에 따라 엔트리의 이름을 표시하는 GameObject 를 활성화합니다.

Canvas/DictionaryWindow/Dictionary/…/Content/Entry/Icon

캐릭터의 아이콘 이미지를 표시합니다. 단, 목록에 표시하는 엔트리에 따라 표시할 이미지의 종류가 달라져야 합니다.

img_11.png

Gs2DictionaryEntryModelNameEnabler

Gs2DictionaryEntryModelFetcher 로 취득한 엔트리 모델의 이름에 따라 GameObject 를 활성화·비활성화합니다. 샘플에서는 5개를 배치하여 “A”~“E” 중 해당하는 엔트리의 노드만 활성화되도록 설정되어 있습니다.

Canvas/DictionaryWindow/Dictionary/…/Content/Entry/Icon/A

“A”~“E” 의 GameObject 가 설정되어 있지만, 원칙적으로 동일한 구성을 취하고 있습니다.

img_12.png

입수 일시를 표시하는 부분과 마찬가지로 분기하여, 입수 완료된 경우에는 Active 를 활성화하고, 미입수인 경우에는 Disabled 를 활성화하고 있습니다.

Canvas/DictionaryWindow/Dictionary/…/Content/Entry/Icon/A/Active

img_13.png

Canvas/DictionaryWindow/Dictionary/…/Content/Entry/Icon/A/Disabled

img_14.png

Disabled 에서는 Material 에 GrayScaleMaterial 을 지정함으로써 셰이더를 사용하여 그레이아웃시키고 있습니다.

Canvas/DictionaryWindow/Dictionary/…/Content/Entry/Name

엔트리 모델의 이름을 표시합니다.

img_15.png

Gs2DictionaryEntryModelLabel

엔트리 모델의 내용을 Format 에서 지정한 형식으로 정형합니다. 정형된 텍스트는 OnUpdate(String) 으로 콜백되어, 거기서 Text 컴포넌트에 값을 반영하고 있습니다.

Canvas/DictionaryWindow/Dictionary/…/Content/Entry/AcquiredAt

엔트리의 입수 일시를 표시합니다.

Gs2DictionaryOwnEntryLabel

엔트리의 내용을 Format 에서 지정한 형식으로 정형합니다. 정형된 텍스트는 OnUpdate(String) 으로 콜백되어, 거기서 Text 컴포넌트에 값을 반영하고 있습니다.

img_16.png

Canvas/DictionaryWindow/Input/Acquire A

img_17.png

Gs2ExchangeRateModelContext

엔트리를 입수 완료 상태로 만드는 GS2-Exchange 의 교환 레이트를 설정합니다.

img_19.png img_18.png

여기서는 GS2-Exchange 의 exchange-0004 네임스페이스에 있는 A 레이트 모델을 교환하도록 설정하고 있습니다.

Canvas/DictionaryWindow/Input/Acquire A/Gs2ExchangeExchangeExchangeAction

img_20.png

이 컨텍스트 메뉴에서 프리팹을 추가할 수 있습니다.

img_21.png

Count 에 교환 수량을 지정하고, 프리팹을 활성화함으로써 Gs2ExchangeRateModelContext 에서 지정한 교환 레이트의 교환을 실행합니다.

OnExchangeComplete(String)

에는 교환 처리가 정상적으로 종료되었을 때의 콜백을 설정할 수 있으며, 자기 자신을 비활성화하고 있습니다.

Process/Gs2AutoLogin

로그인 처리를 실행하는 프리팹이 설정되어 있습니다.

Account 샘플 에서 설명하고 있으므로, 그쪽을 참조해 주세요.