ゲームモード選択 UI を追加する - セッション入門 - (Unity モジュール)
注釈:本資料はAI技術を用いて翻訳されています。
メニューの内容
このセクションでは、セッション作成用の UI メニューを準備する方法を学びます。これらの UI は以下のクラスで定義されています:
- CreateSessionMenu_Starter: セッション作成メニューの表示を担当する C# クラス。
- C# ファイル:
Assets/Resources/Modules/Play/SessionEssentials/Scripts/UI/CreateSessionMenu_Starter.cs - Prefab ファイル:
Assets/Resources/Modules/Play/SessionEssentials/Prefabs/CreateSessionMenu_Starter.prefab
- C# ファイル:
このメニューを処理するコンポーネントは CreateSessionMenu_Starter クラスで定義されています。widgetSwitcher は、現在のメニュー状態(読み込み中、エラー、空の結果、または結果)を表示するために使用されるヘルパーコンポーネントです。
[SerializeField] private AccelByteWarsWidgetSwitcher widgetSwitcher;
[SerializeField] private Transform createSessionPanel;
[SerializeField] private Transform sessionResultPanel;
[SerializeField] private TMP_Text sessionIdText;
[SerializeField] private Button createSessionButton;
[SerializeField] private Button leaveSessionButton;
[SerializeField] private Button backButton;
これらのメニュー状態がどのように構成されているかを詳しく見てみましょう。
-
デフォルト状態
この状態では、セッションを作成するための単一のボタンが表示されます。以下はこの状態のプレビューです:

-
読み込み中状態
この状態では、短いメッセージと共に読み込みスピナーが表示されます。以下はこの状態のプレビューです:

-
エラー状態
この状態では、リクエストを再試行するか前のメニューに戻るかのボタンと共にエラーメッセージが表示されます。以下はこの状態のプレビューです:

-
成功状態
この状態では、作成されたセッション ID とセッションから退出するボタンが表示されます。以下はこの状態のプレビューです:

UI を準備する
このセクションでは、セッション作成機能の統合を開始するために、前述のメニューを準備します。
-
CreateSessionMenu_Starterクラスを開き、以下の関数を作成します。この関数は後でセッション作成リクエストを送信するために使用します。今のところ、以下のコードを追加して状態を読み込み中状態に切り替えます:private async UniTask CreateSession()
{
widgetSwitcher.LoadingMessage = CreatingSessionMessage;
widgetSwitcher.SetWidgetState(AccelByteWarsWidgetSwitcher.WidgetState.Loading);
} -
次に、以下の関数を作成します。この関数は後でセッション退出リクエストを送信するために使用します。今のところ、以下のコードを追加して状態を読み込み中状態に切り替えます:
private void LeaveSession()
{
widgetSwitcher.LoadingMessage = LeavingSessionMessage;
widgetSwitcher.SetWidgetState(AccelByteWarsWidgetSwitcher.WidgetState.Loading);
} -
次に、事前定義された
Awake()関数を以下のコードに置き換えて、先ほど作成した関数をそれぞれのボタンにバインドします:private void Awake()
{
backButton.onClick.AddListener(MenuManager.Instance.OnBackPressed);
createSessionButton.onClick.AddListener(() => CreateSession().Forget());
widgetSwitcher.OnRetryButtonClicked = () => CreateSession().Forget();
leaveSessionButton.onClick.AddListener(LeaveSession);
} -
Unity エディターで、
Assets/Resources/Modules/Play/SessionEssentialsに移動し、SessionEssentialsAssetConfig.assetを開きます。Is ActiveとIs Starter Activeの両方のチェックボックスをオンにして、モジュールがスターターモードで有効化されていることを確認します。 -
最後に、エディターでゲームをプレイします。Main Menu > Play Online > Create a Session メニューに移動できるはずです。Create Elimination ボタンをクリックすると、メニューが読み込み中状態に切り替わります。後で、この動作を実際のセッション作成リクエストに置き換えます。
リソース
-
このチュートリアルで使用されているファイルは、Unity Byte Wars GitHub リポジトリで入手できます。