Documentation index for AI agents

Inbox(GS2 UIKit for Unity) 샘플

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

프레젠트 박스 기능을 구현합니다.

리포지토리

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

GS2-Deploy 템플릿

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

프로젝트 내용

img.png

프로젝트를 열면 위와 같이 표시됩니다.

img_1.png

실행하면 상단에는 아무것도 없고 하단에 메뉴가 표시되는 화면이 나타납니다.

img_2.png

메뉴에서 “Send” 버튼을 3번 눌러 봅니다.

img_3.png

3통의 메시지가 목록으로 표시됩니다. 이처럼 화면 상단에는 프레젠트 박스에 도착한 메시지 목록이 표시됩니다.

img_2.png

이번에는 메뉴에서 “Send With Expire” 버튼을 눌러 봅니다.

img_4.png

메시지 목록에 새로 유효기간이 설정된 메시지 목록이 표시됩니다. 일시 표기가 두 줄로 표시되는데, 위쪽이 수신 일시이고 아래쪽이 유효기간입니다. 유효기간은 수신 일시로부터 1분 후로 설정되어 있습니다.

이대로 1분간 기다려 주세요.

img_5.png

유효기간이 지난 메시지는 자동으로 표시되지 않게 됩니다.

다음으로, 3통 중 가운데에 있는 메시지의 “Read” 버튼을 눌러 봅니다.

img_6.png

이미 읽은 메시지는 Read 버튼이 회색으로 비활성화됩니다.

프로젝트 해설

img_7.png

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

Canvas/InboxWindow

Gs2InboxNamespaceContext

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

img_8.png

이번에는 GS2-Inbox의 inbox-0001이라는 네임스페이스를 지정하고 있습니다.

Canvas/InboxWindow/Inbox/…/Content

img_9.png

Gs2InboxOwnMessageListFetcher

NamespaceContext에서 지정된 네임스페이스의 메시지 목록을 취득합니다.

Gs2InboxOwnMessageList

Gs2InboxOwnMessageListFetcher에서 취득한 메시지를 지정된 프리팹에 할당하여 생성합니다. Maximum Items에는 프리팹을 생성할 최대 개수를 지정합니다.

img_10.png

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

Canvas/InboxWindow/Inbox/…/Content/Message

img_11.png

Gs2InboxOwnMessageContext

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

Gs2InboxOwnMessageFetcher

Gs2InboxOwnMessageContext에서 지정된 메시지를 취득합니다.

Canvas/InboxWindow/Inbox/…/Content/Message/Metadata

메시지의 페이로드를 표시합니다.

img_12.png

Gs2InboxOwnMessageLabel

메시지의 내용을 Format에서 지정한 형식으로 정형화합니다. 정형화된 텍스트는 OnUpdate(String)로 콜백되며, 여기서 Text 컴포넌트에 값을 반영합니다.

Canvas/InboxWindow/Inbox/…/Content/Message/Timestamp

img_13.png

Gs2InboxOwnMessageExpiresAtEnabler

메시지에 설정된 유효기간 값을 기반으로 표시·비표시를 제어합니다. 유효기간이 설정되어 있는 경우 ExpiresAt이 활성화되도록 설정되어 있습니다.

Canvas/InboxWindow/Inbox/…/Content/Message/Timestamp/ReceivedAt

Gs2InboxOwnMessageLabel

img_14.png

메시지의 수신 일시를 표시하고 있습니다. 정형화 방식은 Format으로 지정하며, 정형화된 텍스트는 OnUpdate(String)로 콜백되며, 여기서 Text 컴포넌트에 값을 반영합니다.

Canvas/InboxWindow/Inbox/…/Content/Message/Timestamp/ExpiresAt

Gs2InboxOwnMessageLabel

img_14.png

메시지의 유효기간을 표시하고 있습니다. 정형화 방식은 Format으로 지정하며, 정형화된 텍스트는 OnUpdate(String)로 콜백되며, 여기서 Text 컴포넌트에 값을 반영합니다.

Canvas/InboxWindow/Inbox/…/Content/Message/Control

img_15.png

Gs2InboxOwnMessageIsReadEnabler

메시지의 읽음 상태 값을 기반으로 표시·비표시를 제어합니다. 미읽음 상태인 경우 Read를 활성화하고, 읽음 상태인 경우 AlreadyRead를 활성화합니다.

Canvas/InboxWindow/Inbox/…/Content/Message/Control/Gs2InboxMessageReadAction

img_16.png

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

img_17.png

프리팹을 활성화함으로써 Gs2InboxOwnMessageContext에서 지정한 메시지를 읽음 상태로 만듭니다.

OnReadComplete(String)

에 읽음 처리가 정상적으로 완료되었을 때의 콜백을 설정할 수 있으며, 자기 자신을 비활성화합니다.

Canvas/InboxWindow/Input/Send

img_18.png

Gs2ExchangeRateModelContext

GS2-Inbox의 메시지를 전송하는 GS2-Exchange의 교환 레이트를 설정합니다.

img_20.png img_19.png

여기서는 GS2-Exchange의 exchange-0002라는 이름의 네임스페이스에 있는 SendMessage라는 이름의 교환 레이트를 지정하고 있습니다.

Canvas/ExperienceWindow/Input/Send/Gs2ExchangeExchangeExchangeAction

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

OnExchangeComplete(String)

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

Canvas/InboxWindow/Input/Send With Expire

img_21.png

Gs2ExchangeRateModelContext

GS2-Inbox의 유효기간이 있는 메시지를 전송하는 GS2-Exchange의 교환 레이트를 설정합니다.

여기서는 GS2-Exchange의 exchange-0002라는 이름의 네임스페이스에 있는 SendMessageWithExpire라는 이름의 교환 레이트를 지정하고 있습니다.

Canvas/ExperienceWindow/Input/Send With Expire/Gs2ExchangeExchangeExchangeAction

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

OnExchangeComplete(String)

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

Process/Gs2AutoLogin

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

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