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

# Stamina(GS2 UIKit for Unity) のサンプル

GS2 UIKit for Unity を使用した GS2-Stamina の機能実装サンプルの紹介



スタミナ機能を実装します。

## リポジトリ

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

## GS2-Deploy テンプレート

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

## プロジェクト内容

![img.png](img.png)

プロジェクトを開くと上記の通りになります。

![img_1.png](img_1.png)

実行するとこのようにスタミナの残量と、スタミナ操作のUIが表示されます。

![img_2.png](img_2.png)

まずは「Consume(5)」のボタンをクリックします。

![img_3.png](img_3.png)

スタミナを消費したことで、残量の表示が「45/50」となり、回復するまでのカウントダウンが表示されます。

次に「Recover(10)」のボタンをクリックします。

![img_4.png](img_4.png)

スタミナの残量が「55/50」になります。
最大値を超えた状態になりましたので、再びカウントダウンは表示されなくなります。

## プロジェクトの解説

![img_5.png](img_5.png)

シーンのヒエラルキーに注目してください。

### Canvas/StaminaWindow

![img_6.png](img_6.png)

**Gs2StaminaOwnStaminaContext**

この GameObject 以下のノードで取り扱う GS2-Stamina のスタミナを指定しています。

![img_8.png](img_8.png)
![img_7.png](img_7.png)

今回は、GS2-Stamina の stamina-0001 というネームスペースの Stamina という名前のスタミナを指定しています。

### Canvas/StaminaWindow/Stamina

**Gs2StaminaStaminaEnabler**

スタミナの読み込みが終わったら StaminaValue を有効化します。

### Canvas/StaminaWindow/Stamina/StaminaValue/Slider

![img_9.png](img_9.png)

**Gs2StaminaStaminaProgress**

現在のスタミナの値の最大値に対する割合を 0.0〜1.0 で取得します。
最大値を超えた状態では 1.0 に丸められます。

取得した結果は OnUpdate(Single) に渡され、Slider の値に反映しています。

### Canvas/StaminaWindow/Stamina/StaminaValue/Slider/Label

![img_10.png](img_10.png)

**Gs2StaminaOwnStaminaValueEnabler**

スタミナが最大値に達しているかで GameObject を有効化します。

### Canvas/StaminaWindow/Stamina/StaminaValue/Slider/Label/NextRecoverAt

![img_11.png](img_11.png)

**Gs2StaminaOwnStaminaNextRecoverAtFetcher**

スタミナが次回回復する日時を取得します。
取得した結果は OnUpdate(int64) にコールバックされ、Gs2CoreTimeSpanLabel に値を反映します。

**Gs2CoreTimeSpanLabel**

スタミナが次回回復する日時までの残り時間を Format で指定した形式に整形します。
整形されたテキストは OnUpdate(String) にコールバックされ、そこから Text コンポーネントに値を反映しています。

### Process/Gs2AutoLogin

ログイン処理を実行するプレハブが設定されています。

[Accountのサンプル]() で解説していますので、そちらを参照ください。




