Documentation index for AI agents

Experience(GS2 UIKit for Unity) 샘플

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

경험치·레벨 기능을 구현합니다.

저장소

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

GS2-Deploy 템플릿

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

프로젝트 내용

img.png

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

img_1.png

실행하면 이와 같이 현재 레벨과 레벨 캡, 진행률 바가 표시됩니다.

img_2.png

화면 하단에 경험치 조작 버튼이 준비되어 있습니다.

“Add Experience(100)“으로 경험치를 100 추가해 봅시다.

img_3.png

경험치가 추가되어 레벨이 1에서 3으로 올랐습니다.

다시 한 번 “Add Experience(100)“으로 경험치를 100 추가해 봅시다.

img_4.png

레벨이 5로 올라 레벨 캡에 도달했습니다. 이 상태를 알기 쉽게 하기 위해, 레벨 값 표기가 검은색에서 빨간색으로 바뀌어 있습니다.

“Add Rank Cap"을 눌러 레벨 캡 인상을 실행해 봅시다.

img_5.png

레벨 캡이 5에서 6으로 인상되었습니다. 그 결과 현재 레벨이 레벨 캡에 도달하지 않은 상태가 되었으므로, 레벨 표기도 빨간색에서 검은색으로 돌아왔습니다.

프로젝트 해설

img_6.png

씬의 계층 구조(Hierarchy)에 주목해 주십시오.

Canvas/ExperienceWindow

img_7.png

Gs2ExperienceExperienceModelContext

이 GameObject 아래의 노드에서 다루는 경험치 모델을 지정하고 있습니다.

img_9.png img_8.png

이번에는 GS2-Experience의 experience-0001이라는 네임스페이스의, Experience라는 경험치 모델을 지정하고 있습니다.

Gs2ExperienceOwnStatusContext

이 GameObject 아래의 노드에서 다루는 자신의 스테이터스를 지정하고 있습니다.

img_11.png img_10.png

이번에는 GS2-Experience의 experience-0001이라는 네임스페이스의, Experience라는 경험치 모델, player라는 프로퍼티ID를 지정하고 있습니다.

Gs2ExperienceOwnStatusFetcher

Gs2ExperienceOwnStatusContext에서 지정한 스테이터스를 취득합니다.

Canvas/ExperienceWindow/Experience/…/RankValue

img_12.png

Gs2ExperienceStatusEnabler

스테이터스의 로딩 상황에 따라 ValueContainer / Slider를 활성화·비활성화하고 있습니다.

Canvas/ExperienceWindow/Experience/…/RankValue/ValueContainer

img_13.png

Gs2ExperienceStatusRankValueEnabler

스테이터스의 랭크가 최대값에 도달했는지 여부에 따라 Value / ReachMaxValue를 활성화·비활성화하고 있습니다.

Canvas/ExperienceWindow/Experience/…/RankValue/ValueContainer/Value

img_14.png

Gs2ExperienceOwnStatusLabel

현재 랭크 값이나 랭크 캡 값을 Format으로 지정한 형식으로 정형하고 있습니다. 정형한 결과는 OnUpdate(String)으로 콜백되므로, Text 컴포넌트에 반영하고 있습니다. 이 Text 컴포넌트는 텍스트 색상으로 검은색을 지정하고 있습니다.

Canvas/ExperienceWindow/Experience/…/RankValue/ValueContainer/ReachMaxValue

img_14.png

Gs2ExperienceOwnStatusLabel

현재 랭크 값이나 랭크 캡 값을 Format으로 지정한 형식으로 정형하고 있습니다. 정형한 결과는 OnUpdate(String)으로 콜백되므로, Text 컴포넌트에 반영하고 있습니다. 이 Text 컴포넌트는 텍스트 색상으로 빨간색을 지정하고 있습니다.

Canvas/ExperienceWindow/Experience/…/Slider

img_15.png

Gs2ExperienceStatusProgress

현재 랭크에서 다음 랭크업까지 필요한 경험치에 도달하기까지의 진행률을 0.0~1.0으로 OnUpdate(Single)의 콜백으로 반환합니다. Slider.value에 값으로 반영하고 있습니다.

Canvas/ExperienceWindow/Input/AddExperience

Gs2ExchangeRateModelContext

경험치를 10 추가하는 GS2-Exchange의 교환 비율을 설정합니다.

img_19.png img_18.png

여기서는 GS2-Exchange의 exchange-0006이라는 이름의 네임스페이스의 AddExperience라는 이름의 교환 비율을 지정하고 있습니다.

Canvas/ExperienceWindow/Input/AddExperience/Gs2ExchangeExchangeExchangeAction

img_16.png

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

img_17.png

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

OnExchangeComplete(String)

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

Canvas/ExperienceWindow/Input/AddExperienceX10

Canvas/ExperienceWindow/Input/AddExperience 와 마찬가지로, 경험치를 10 추가하는 GS2-Exchange의 교환 비율을 설정합니다.

Canvas/ExperienceWindow/Input/AddExperienceX10/Gs2ExchangeExchangeExchangeAction

교환 수량으로 10이 설정되어 있습니다.

Canvas/ExperienceWindow/Input/AddRankCap

랭크 캡을 1 추가하는 GS2-Exchange의 교환 비율을 설정합니다.

Process/Gs2AutoLogin

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

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