Dictionary(GS2 UIKit for Unity) 샘플
도감 기능을 구현합니다.
리포지토리
https://github.com/gs2io/gs2-uikit-for-unity-sample/tree/main/Dictionary
GS2-Deploy 템플릿
프로젝트 내용

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

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

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

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

“C” 캐릭터도 컬러 표시가 됩니다.
프로젝트 해설

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

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

이번에는 dictionary-0001 을 지정하고 있습니다.
Canvas/DictionaryWindow/Dictionary/…/Content

Gs2DictionaryEntryModelListFetcher
NamespaceContext 에서 지정된 네임스페이스의 엔트리 모델 목록을 취득합니다.
Gs2DictionaryEntryModelList
Gs2DictionaryEntryModelListFetcher 로 취득한 엔트리 모델을 지정된 프리팹에 할당하여 생성합니다. Maximum Items 에는 프리팹을 생성할 최대 개수를 지정합니다.

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

Gs2DictionaryEntryModelContext
이 GameObject 이하의 노드에서 다룰 엔트리를 지정하고 있습니다. 컨텍스트의 내용은 Gs2DictionaryEntryModelList 에 의해 할당됩니다.
Gs2DictionaryEntryModelFetcher
Gs2DictionaryEntryModelContext 에서 지정된 엔트리의 모델을 취득합니다.
Gs2DictionaryOwnEntryFetcher
Gs2DictionaryEntryModelContext 에서 지정된 엔트리 모델의 자신의 엔트리를 취득합니다.
Gs2DictionaryEntryEnabler
Entry 의 로드 상태에 따라 입수 일시를 표시하는 GameObject 를 활성화합니다. 엔트리를 입수하지 않은 경우에는 Loaded 상태가 되지 않으므로, 입수한 경우에만 활성화됩니다.
Gs2DictionaryEntryModelEnabler
EntryModel 의 로드 상황에 따라 엔트리의 이름을 표시하는 GameObject 를 활성화합니다.
Canvas/DictionaryWindow/Dictionary/…/Content/Entry/Icon
캐릭터의 아이콘 이미지를 표시합니다. 단, 목록에 표시하는 엔트리에 따라 표시할 이미지의 종류가 달라져야 합니다.

Gs2DictionaryEntryModelNameEnabler
Gs2DictionaryEntryModelFetcher 로 취득한 엔트리 모델의 이름에 따라 GameObject 를 활성화·비활성화합니다. 샘플에서는 5개를 배치하여 “A”~“E” 중 해당하는 엔트리의 노드만 활성화되도록 설정되어 있습니다.
Canvas/DictionaryWindow/Dictionary/…/Content/Entry/Icon/A
“A”~“E” 의 GameObject 가 설정되어 있지만, 원칙적으로 동일한 구성을 취하고 있습니다.

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

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

Disabled 에서는 Material 에 GrayScaleMaterial 을 지정함으로써 셰이더를 사용하여 그레이아웃시키고 있습니다.
Canvas/DictionaryWindow/Dictionary/…/Content/Entry/Name
엔트리 모델의 이름을 표시합니다.

Gs2DictionaryEntryModelLabel
엔트리 모델의 내용을 Format 에서 지정한 형식으로 정형합니다. 정형된 텍스트는 OnUpdate(String) 으로 콜백되어, 거기서 Text 컴포넌트에 값을 반영하고 있습니다.
Canvas/DictionaryWindow/Dictionary/…/Content/Entry/AcquiredAt
엔트리의 입수 일시를 표시합니다.
Gs2DictionaryOwnEntryLabel
엔트리의 내용을 Format 에서 지정한 형식으로 정형합니다. 정형된 텍스트는 OnUpdate(String) 으로 콜백되어, 거기서 Text 컴포넌트에 값을 반영하고 있습니다.

Canvas/DictionaryWindow/Input/Acquire A

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

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

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

Count 에 교환 수량을 지정하고, 프리팹을 활성화함으로써 Gs2ExchangeRateModelContext 에서 지정한 교환 레이트의 교환을 실행합니다.
OnExchangeComplete(String)
에는 교환 처리가 정상적으로 종료되었을 때의 콜백을 설정할 수 있으며, 자기 자신을 비활성화하고 있습니다.
Process/Gs2AutoLogin
로그인 처리를 실행하는 프리팹이 설정되어 있습니다.
Account 샘플 에서 설명하고 있으므로, 그쪽을 참조해 주세요.