メインコンテンツまでスキップ

マッチメイキング後のUI - ピアツーピアによるクイックマッチ - (Unityモジュール)

Last updated on February 4, 2026

注釈:本資料はAI技術を用いて翻訳されています。

備考

AccelByte Gaming Services (AGS) SDK for UnityはWebGL上でP2Pをサポートしていません。このモジュールはWebGLビルドでは使用できません。

備考

このページにはアクションチュートリアルのステップはありません。これはByte Warsがオンラインマルチプレイヤーをどのように処理するかについての情報ページです。

マッチロビーメニュー

このメニューは、プレイヤーがゲームサーバー(ピアツーピアまたはピアツーピアホスト)に正常に接続したときに表示されます。チームとそのメンバーに関する情報(プレイヤーの表示名やアバターなど)が表示されます。このUIは以下のクラスで定義されています:

  • C#ファイル: Assets/Scripts/UI/MainMenu/MatchLobbyMenu.cs
  • Prefabファイル: Assets/Resources/Modules/MainMenu/MatchLobby/MatchLobbyMenuCanvas.prefab

以下はマッチロビーメニューのプレビューです。ここでは、チームとプレイヤーのエントリーを視覚化するために、いくつかの一時的なエントリーが追加されています。

Match lobby menu preview Unity Byte Wars quick match peer-to-peer

上記のプレビューからわかるように、このメニューには2つの主要なボタンがあります。最初のボタンはゲームを開始し、プレイヤーをゲームプレイレベルに移動させます。もう1つはゲームサーバーを終了します。これらのボタンの宣言はMatchLobbyMenuCanvasクラスで確認できます。

[SerializeField] private Button startButton;
[SerializeField] private Button quitButton;

プレイヤーエントリーを生成するために、このメニューは以下の関数を使用します:

private void GenerateTeamEntries()
{
ulong clientNetworkId = NetworkManager.Singleton.LocalClientId;
Dictionary<ulong, PlayerState> playerStates = GameManager.Instance.ConnectedPlayerStates;
Dictionary<int, TeamState> teamStates = GameManager.Instance.ConnectedTeamStates;

teamEntryListPanel.DestroyAllChildren();

// Generate team and its member entries.
Dictionary<int, TeamEntry> teamEntries = new Dictionary<int, TeamEntry>();
foreach (KeyValuePair<ulong, PlayerState> kvp in playerStates.OrderBy(p => p.Value.TeamIndex))
{
PlayerState playerState = kvp.Value;
int playerTeamIndex = playerState.TeamIndex;
bool isCurrentPlayer = playerState.ClientNetworkId == clientNetworkId;

if (!teamStates.ContainsKey(playerTeamIndex))
{
BytewarsLogger.Log($"Cannot spawn player entry. Invalid team index: {playerTeamIndex}");
continue;
}

// Create the team entry if not yet.
if (!teamEntries.ContainsKey(playerTeamIndex))
{
TeamEntry teamEntry = Instantiate(teamEntryPrefab, Vector3.zero, Quaternion.identity, teamEntryListPanel);
teamEntry.Set(teamStates[playerTeamIndex]);
teamEntries.Add(playerTeamIndex, teamEntry);
}

RectTransform teamEntryContainer = (RectTransform)teamEntries[playerTeamIndex].transform;
RectTransform playerEntryContainer = teamEntries[playerTeamIndex].PlayerEntryContainer;

// Create the player entry.
PlayerEntry playerEntry = Instantiate(
playerEntryPrefab,
Vector3.zero,
Quaternion.identity,
playerEntryContainer);

playerEntry.Set(teamStates[playerTeamIndex], playerState, isCurrentPlayer);

LayoutRebuilder.ForceRebuildLayoutImmediate(playerEntryContainer);
LayoutRebuilder.ForceRebuildLayoutImmediate(teamEntryContainer);
}

LayoutRebuilder.ForceRebuildLayoutImmediate(teamEntryListPanel);
}

上記のコードから、エントリーを生成するためにTeamEntryPlayerEntryクラスをインスタンス化していることがわかります。これらのエントリーについて詳しく見ていきましょう。

チームエントリー

このUIエントリーは、チームに基づいてプレイヤー情報エントリーをグループ化するために使用されます。このUIは以下のクラスで定義されています:

  • C#ファイル: Assets/Scripts/UI/TeamEntry.cs
  • Prefabファイル: Assets/Prefabs/UI/TeamEntry.prefab

以下はチームエントリーUIのプレビューです。

Team entry preview Unity Byte Wars quick match peer-to-peer

プレイヤーエントリー

このUIエントリーは、プレイヤーの表示名やアバターなどのプレイヤー情報を表示するために使用されます。このUIは以下のクラスで定義されています:

  • C#ファイル: Assets/Scripts/UI/PlayerEntry.cs
  • Prefabファイル: Assets/Prefabs/UI/PlayerEntry.prefab

以下はプレイヤーエントリーUIのプレビューです。

Player entry preview Unity Byte Wars quick match peer-to-peer

ポーズメニュー

プレイヤーがゲームプレイレベルに入ると、ゲームを一時停止でき、ポーズメニューが表示されます。このメニューには、再開、リスタート、終了などのいくつかのボタンが表示されます。以下のクラスとPrefabで定義されています:

  • C#ファイル: Assets/Scripts/UI/PauseMenuCanvas.cs
  • Prefabファイル: Assets/Resources/Modules/MainMenu/GamePlay/PauseMenuCanvas.prefab

以下はポーズメニューのプレビューです:

Pause menu preview Unity Byte Wars quick match peer-to-peer

このメニューで使用されるコンポーネントはPauseMenuCanvasクラスで定義されています:

[SerializeField] private Button resumeBtn;
[SerializeField] private Button restartBtn;
[SerializeField] private Button quitBtn;

ゲームオーバーメニュー

ゲームが終了すると、このメニューが表示され、誰が勝ったかなどのゲーム情報と、もう一度プレイするかゲームを終了するかのボタンが表示されます。このメニューは以下のクラスとPrefabで定義されています:

  • C#ファイル: Assets/Scripts/UI/Gameplay/GameOverMenuCanvas.cs
  • Prefabファイル: Assets/Resources/Modules/MainMenu/GamePlay/GameOverMenuCanvas.prefab

以下はゲームオーバーメニューのプレビューです:

Game over menu preview Unity Byte Wars quick match peer-to-peer

このメニューで使用されるコンポーネントはPauseMenuCanvasクラスで定義されています:

[SerializeField] private TextMeshProUGUI winnerPlayerTextUI;
[SerializeField] private RectTransform leaderboardList;
[SerializeField] private LeaderboardEntryController leaderboardEntryPrefab;
[SerializeField] private Button playAgainBtn;
[SerializeField] private Button quitBtn;

リソース