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

マッチ後のメニュー - 専用サーバーを使用した参加可能なセッションの作成 - (Unity モジュール)

Last updated on February 4, 2026

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

備考

このページには実際のチュートリアル手順はありません。これは 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 dedicated server

上記のプレビューからわかるように、このメニューには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 dedicated server

プレイヤーエントリ

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

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

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

Player entry preview Unity Byte Wars quick match dedicated server

ポーズメニュー

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

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

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

Pause menu preview Unity Byte Wars quick match dedicated server

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

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

ゲームオーバーメニュー

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

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

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

Game over menu preview Unity Byte Wars quick match dedicated server

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

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

リソース