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

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

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



アカウントの作成とログイン処理を実行します。

## リポジトリ

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

## GS2-Deploy テンプレート

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

## プロジェクト内容

![img.png](img.png)

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

![img_2.png](img_2.png)

実行してみると、最初は 「Not Logged-in」 と表示されます。

![img_1.png](img_1.png)

しばらく待つと「Logged-in」という表示に変わり、右下にログイン中のユーザーIDが表示されます。

## プロジェクトの解説

![img_3.png](img_3.png)

シーンのヒエラルキーに注目してください。
GS2 のロゴが表示されている Game Object には UI Kit のコンポーネントが割り当てられています。

### Canvas/View

![img_4.png](img_4.png)

2つのコンポーネントが割り当てられているのを確認できます。

**Gs2AccountLoggedInEnabler** 

Add Component メニューでは以下のパスで追加できます。
![img_5.png](img_5.png)

ログイン状態に応じて GameObject を有効化・無効化できるコンポーネントです。

Logged In にチェックを入れずに Target に GameObject を指定すると、
未ログイン時に Target に指定した GameObject が有効化され、ログイン時に無効化されます。

逆に、Logged In にチェックを入れておくと
ログイン時に Target に指定した GameObject が有効化され、未ログイン時に無効化されます。

今回のサンプルでは、未ログイン時には「NotFoggedIn」が有効になり、ログイン時には「LoggedIn」が有効になります。

### Canvas/View/LoggedIn

![img_6.png](img_6.png)

ここでも2つのコンポーネントが割り当てられているのを確認できます。

**Gs2AccountOwnAccountContext**

この GameObject より子要素で使用するコンテキストを指定します。
Gs2AccountOwnAccountContext では GS2-Account のログイン中のアカウントに関するコンテキストを指定します。

「OwnAccount」 という ScriptableObject が指定されています。

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

OwnAccount で指定している ScriptableObject を確認すると、
game-0001 という名前のネームスペース内の自分自身のアカウントを表現する ScriptableObject が指定されています。

**Gs2AccountOwnAccountFetcher**

Gs2AccountOwnAccountContext で指定されたアカウントの情報を取得し、保持します。

### Canvas/View/LoggedIn/UserId

![img_9.png](img_9.png)

**Gs2AccountAccountLabel**

親ノードの Gs2AccountOwnAccountFetcher で取得したアカウントの情報を Format で指定した形式で出力します。

サンプルでは {userId} を指定しているので、自分自身のユーザーIDに置き換えられます。
Add Format Parameter のボタンを押すことで Format にプレースホルダを追加できます。

整形された文字列は OnUpdate(String) イベントに渡されます。
今回は同じ GameObject に設定された Text に値を反映しています。

### Process/Gs2AutoLogin

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

![img_11.png](img_11.png)

このようなAPIを実行するプレハブはコンテキストメニューから追加が可能です。

![img_10.png](img_10.png)

**AutoLogin**

アカウントを作成・ログインに使用する GS2-Account のネームスペースと、ログイン処理に使用する GS2-Key の暗号鍵を指定しています。

OnAutoLogin でログインが成功したときに呼び出されるイベントハンドラを設定しています。
デフォルトでは、自身の GameObject を無効化して、ログイン処理が多重で走らないように設定しています。

OnError でログインに失敗したときに呼び出されるイベントハンドラを設定しています。
ここでは、エラー内容を出力する関数を呼び出しています。



