> For the complete documentation index, see [llms.txt](/llms.txt)

# MoneyStore(GS2 UIKit for Unity) 샘플

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



과금 통화의 판매 기능을 구현합니다.

## 리포지토리

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

## GS2-Deploy 템플릿

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

## 프로젝트 내용

![img.png](img.png)

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

![img_1.png](img_1.png)

실행하면 이와 같이 판매 중인 상품 목록이 표시됩니다.

"¥100 x100" 의 "Buy"를 클릭합니다.

![img_2.png](img_2.png)

잔고가 100이 되었습니다.
Editor 에서는 표시되지 않지만, iOS 나 Android 에서 실행하면 결제 시퀀스가 개입합니다.

## 프로젝트 해설

![img_3.png](img_3.png)

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

### Canvas/MoneyStoreWindow/Wallet

과금 통화의 잔고를 표시하고 있습니다.

[Money 샘플]() 에서 설명하고 있으니 그쪽을 참조해 주십시오.

### Canvas/MoneyStoreWindow/Store

![img_4.png](img_4.png)

**Gs2ShowcaseOwnShowcaseContext**

이 GameObject 이하의 노드에서 다루는 GS2-Showcase 의 진열대를 지정하고 있습니다.

![img_6.png](img_6.png)
![img_5.png](img_5.png)

이번에는 GS2-Showcase 의 showcase-0001 이라는 네임스페이스의 GenStore 라는 이름의 진열대를 지정하고 있습니다.

**Gs2ShowcaseOwnShowcaseFetcher**

Gs2ShowcaseOwnShowcaseContext 에서 지정한 진열대의 정보를 취득합니다.

### Canvas/MoneyStoreWindow/Store/.../Content

![img_7.png](img_7.png)

**Gs2ShowcaseOwnDisplayItemList**

Gs2ShowcaseOwnShowcaseFetcher 로 취득한 진열대에 진열된 상품을 지정된 프리팹에 할당하여 생성합니다.
Maximum Items 에는 프리팹을 생성할 최대 수를 지정합니다.

![img_8.png](img_8.png)

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

### Canvas/MoneyStoreWindow/Store/.../Content/DisplayItem

![img_10.png](img_10.png)

**Gs2ShowcaseOwnDisplayItemContext**

이 GameObject 이하의 노드에서 다루는 상품을 지정하고 있습니다.
컨텍스트의 내용은 Gs2ShowcaseOwnDisplayItemList 에 의해 할당됩니다.

**Gs2ShowcaseOwnDisplayItemFetcher**

진열되어 있는 상품의 상세 정보를 취득합니다.

### Canvas/MoneyStoreWindow/Store/.../Content/DisplayItem/Icon

![img_11.png](img_11.png)

**Gs2ShowcaseOwnSalesItemNameEnabler**

진열되어 있는 상품의 이름을 사용하여 GameObject 의 표시·비표시를 제어합니다.
상품별로 표시할 이미지를 전환하는 데 사용하고 있습니다.

### Canvas/MoneyStoreWindow/Store/.../Content/DisplayItem/Price

![img_12.png](img_12.png)

**Gs2MoneyDepositByUserIdFetcher**

DisplayItem 의 AcquireActions 에서 Gs2MoneyDepositByUserId 를 꺼냅니다.

**Gs2MoneyDepositByUserIdLabel**

Gs2MoneyDepositByUserId 에 설정된 파라미터를 Format 으로 지정된 형식으로 정리합니다.
정리된 텍스트는 OnUpdate(String) 로 콜백되어, 그곳에서 Text 컴포넌트에 값을 반영합니다.

### Canvas/MoneyStoreWindow/Store/.../Content/DisplayItem/Count

![img_12.png](img_12.png)

**Gs2MoneyDepositByUserIdFetcher**

DisplayItem 의 AcquireActions 에서 Gs2MoneyDepositByUserId 를 꺼냅니다.

**Gs2MoneyDepositByUserIdLabel**

Gs2MoneyDepositByUserId 에 설정된 파라미터를 Format 으로 지정된 형식으로 정리합니다.
정리된 텍스트는 OnUpdate(String) 로 콜백되어, 그곳에서 Text 컴포넌트에 값을 반영합니다.

### Canvas/MoneyStoreWindow/Store/.../Content/DisplayItem/Buy/Gs2ShowcaseShowcaseBuyAction

![img_13.png](img_13.png)

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

**Gs2ShowcaseShowcaseBuyAction**

Quantity 로 구매할 수량을 지정할 수 있습니다.

프리팹을 활성화함으로써 Gs2ShowcaseDisplayItemContext 에서 지정한 상품을 구매합니다.

### Process/Gs2AutoLogin

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

[Account 샘플]() 에서 설명하고 있으니 그쪽을 참조해 주십시오.




