ユーザーインターフェースの準備 - ピアツーピアによるクイックマッチ - (Unity モジュール)
注釈:本資料はAI技術を用いて翻訳されています。
AccelByte Gaming Services (AGS) SDK for Unity は WebGL で P2P をサポートしていません。このモジュールは WebGL ビルドでは使用できません。
メニューの内容
このセクションでは、マッチメイキング用の UI メニューを準備する方法を学びます。これらの UI は以下のクラスで定義されています:
-
MatchmakingMenu: マッチメイキング前にゲームモード選択を表示するために使用される C# クラス。
- C# ファイル:
Assets/Resources/Modules/Play/MatchmakingEssentials/Scripts/UI/MatchmakingMenu.cs - Prefab ファイル:
Assets/Resources/Modules/Play/MatchmakingEssentials/Prefabs/MatchmakingMenu.prefab
- C# ファイル:
-
MatchmakingServerTypeMenu: マッチメイキング前にサーバータイプ選択(ピアツーピアまたはピアツーピア)を表示するために使用される C# クラス。
- C# ファイル:
Assets/Resources/Modules/Play/MatchmakingEssentials/Scripts/UI/MatchmakingServerTypeMenu.cs - Prefab ファイル:
Assets/Resources/Modules/Play/MatchmakingEssentials/Prefabs/MatchmakingServerTypeMenu.prefab
- C# ファイル:
-
MatchmakingP2PMenu_Starter: マッチメイキング開始、マッチ発見、マッチメイキングキャンセルなどのマッチメイキング状態を表示するために使用される C# クラス。
- C# ファイル:
Assets/Resources/Modules/Play/MatchmakingP2P/Scripts/UI/MatchmakingP2PMenu_Starter.cs - Prefab ファイル:
Assets/Resources/Modules/Play/MatchmakingP2P/Prefabs/MatchmakingP2PMenu_Starter.prefab
- C# ファイル:
これらの UI がどのように構築されているかの詳細を見てみましょう。
マッチメイキングメニュー
以下は MatchmakingMenu Prefab のプレビューです。この Prefab には、マッチメイキング開始前にゲームモードを選択するためのボタンが含まれています。

このメニューで使用されるコンポーネントは MatchmakingMenu クラスで定義されています。ゲームモードボタンの1つがクリックされると、選択されたゲームモードが SelectedGameMode プロパティに保存されます。
public static InGameMode SelectedGameMode { get; private set; }
[SerializeField] private Button eliminationButton;
[SerializeField] private Button teamDeathMatchButton;
[SerializeField] private Button backButton;
マッチメイキングサーバータイプメニュー
以下は MatchmakingServerTypeMenu Prefab のプレビューです。この Prefab には、マッチメイキング開始前にサーバータイプを選択するためのボタンが含まれています。

このメニューで使用されるコンポーネントは MatchmakingServerTypeMenu クラスで定義されています。サーバータイプボタンの1つがクリックされると、選択されたタイプに基づいて次のメニューが開きます。例えば、ピアツーピアボタンがクリックされると、MatchmakingP2PMenu_Starter Prefab がインスタンス化されます。
[SerializeField] private Button dedicatedServerButton;
[SerializeField] private Button peerToPeerButton;
[SerializeField] private Button backButton;
マッチメイキング P2P メニュー
MatchmakingP2PMenu_Starter Prefab には、マッチメイキング状態に基づいて特定のメニューを表示するための状態スイッチャーが含まれています。メニュー状態を切り替えるために、MatchmakingP2PMenu_Starter クラスで以下に定義されたコンポーネントを使用します。
[SerializeField] private MatchmakingStateSwitcher stateSwitcher;
以下は、このメニューに含まれる状態のリストです。
-
マッチメイキング開始状態
この状態は、マッチメイキングが開始され、マッチメイキングリクエストが送信されていることを示すメッセージを表示します。

-
マッチメイキングキャンセル状態
この状態は、マッチメイキングがキャンセルされたことを示すメッセージを表示します。

-
マッチ検索中状態
この状態は、マッチメイキングが進行中であることを示すメッセージを表示します。また、プレイヤーがマッチメイキングプロセスをキャンセルできるボタンも表示されます。

-
マッチ発見状態
この状態は、マッチメイキングがマッチしたプレイヤーを正常に見つけ、新しいセッションを作成する準備ができていることを示すメッセージを表示します。

-
マッチ参加確認状態
この状態は、プレイヤーがマッチに参加するか、マッチ招待を拒否するかを選択できるボタンを含むダイアログを表示します。また、プレイヤーが選択しない場合の自動参加カウントダウンも含まれています。

-
エラー状態
この状態は、マッチメイキングプロセス中に発生したエラーメッセージを表示します。また、マッチメイキングを再試行するボタンも表示されます。

UI の準備
このセクションでは、マッチメイキング機能の統合を開始するために、前述のメニューを準備します。
-
MatchmakingP2PMenu_Starterクラスを開き、以下の関数を作成します。後でこの関数を使用してマッチメイキング開始リクエストを送信します。今のところ、以下のコードを追加してメニューをマッチメイキング開始状態に切り替えます。private void StartMatchmaking()
{
stateSwitcher.SetState(MatchmakingMenuState.StartMatchmaking);
} -
次に、マッチメイキングをキャンセルするための以下の関数を作成します。後でこの関数を使用してマッチメイキングキャンセルリクエストを送信します。今のところ、メニューをマッチメイキングキャンセル状態に切り替えます。
private void CancelMatchmaking(string matchTicketId)
{
stateSwitcher.SetState(MatchmakingMenuState.CancelMatchmaking);
} -
事前定義された
Awake()関数を以下のコードに置き換えて、リクエストが失敗したときにマッチメイキングを再開するために再試行ボタンをバインドします。private void Awake()
{
stateSwitcher.OnRetryButtonClicked = StartMatchmaking;
} -
次に、事前定義された
OnEnable()関数を以下のコードに置き換えて、メニューが表示されたときに自動的にマッチメイキングを開始します。private void OnEnable()
{
StartMatchmaking();
} -
Unity エディターで、
Assets/Resources/Modules/Play/MatchmakingP2Pに移動し、MatchmakingP2PEssentialsAssetConfig.assetを開きます。Is Active と Is Starter Active の両方のチェックボックスをオンにして、モジュールがスターターモードでアクティブ化されていることを確認します。 -
最後に、エディターでゲームをプレイします。Play Online > Quick Play からメインメニューに移動し、任意のゲームモードを選択して、Perr to Peer ボタンをクリックできるはずです。その後、メニューはマッチメイキング開始状態に切り替わります。後で、この動作を実際のマッチメイキングリクエストに置き換えます。
リソース
-
このチュートリアルで使用されるファイルは、Unity Byte Wars GitHub リポジトリで入手できます。
- Assets/Resources/Modules/Play/MatchmakingEssentials/Scripts/UI/MatchmakingMenu.cs
- Assets/Resources/Modules/Play/MatchmakingEssentials/Prefabs/MatchmakingMenu.prefab
- Assets/Resources/Modules/Play/MatchmakingEssentials/Scripts/UI/MatchmakingServerTypeMenu.cs
- Assets/Resources/Modules/Play/MatchmakingEssentials/Prefabs/MatchmakingServerTypeMenu.prefab
- Assets/Resources/Modules/Play/MatchmakingP2P/Scripts/UI/MatchmakingP2PMenu_Starter.cs
- Assets/Resources/Modules/Play/MatchmakingP2P/Prefabs/MatchmakingP2PMenu_Starter.prefab