Page Not Found | Unity Multiplayer
人数制限、タイミング制限に利用します。
チェック必要ないかと思っていけど、ゲーム中にも接続できてしまうので途中参加はできないようにしました。
networkmanager で connection approvalにチェックします。
buffer tirはよくわかりませんが接続バッファなのでチェックしたい内容により max か +αで良いかなと思います。

// check max
int approvedCount = 0;
private void ApprovalCheck(byte[] connectionData, ulong clientId, NetworkManager.ConnectionApprovedDelegate callback)
{
//Your logic here
bool approve = false;
bool createPlayerObject = false;
// check max players
if( NetworkManager.Singleton.ConnectedClients.Count < maxPlayers
&& approvedCount < maxPlayers
&& isRoungeScene
)
{
approvedCount++;
approve = true;
createPlayerObject = true;
}
Debug.Log("Approvalcheck " + approvedCount.ToString());
//If approve is true, the connection gets added. If it's false. The client gets disconnected
callback(createPlayerObject, null, approve, Vector3.zero, Quaternion.identity);
}最大接続数とホストが接続待ち状態かをチェックしています。
ConnectedClientsのタイミングではなくその手前で止めてしまうようにapprovedCountを先にチェックしています。
isRoungeSceneはゲーム開始時に変更しています。


コメント