Unity6の新機能 Multiplayer Play Modeでは、複数のGameViewを出してマルチプレイヤー環境のテストが出来ます。この機能を使って NetworkManager の
Server/Host/Client を切り替えるには、 Dedicated server側の Unity.Multiplayer.MultiplayerRolesManager
を使用します。Multiplayer
Center で環境のセットアップを行っていたりすると、「これは Multiplayer Play Mode の一環だな」と誤解してしまい、訳がわからなくなるので注意が必要です(経験済み)。
単純に MultiplayerRolesManager.ActiveMultiplayerRoleMask
を見るだけでよさそうでした。
実際に趣味開発使用しているコード例:
void Start
{
switch (MultiplayerRolesManager.ActiveMultiplayerRoleMask)
{
case MultiplayerRoleFlags.Client:
/// 何度か接続試行させる
for (int i = 1; i < retryCount; i++) {
if (NetworkManager.Singleton.StartClient()) {
Debug.Log("[Client] Initialized as Client.");
return;
} else {
Debug.Log($"[Client] Failed to initialize as Client. Retry in {retryIntervalSec} seconds.");
await UniTask.Delay(TimeSpan.FromSeconds(retryIntervalSec));
}
}
Debug.LogWarning("Failed to initialize as Host nor Client.");
break;
case MultiplayerRoleFlags.ClientAndServer:
if (NetworkManager.Singleton.StartHost())
{
// サーバーの初期化処理は Host の場合と Server の場合で共通なので括り出し
InitializeServer();
}
break;
case MultiplayerRoleFlags.Server:
if (NetworkManager.Singleton.StartServer())
{
InitializeServer();
}
break;
}
}