Unity Netcode – Connection Approval で接続チェックする!

Unity
Connection Approval | Unity Multiplayer Networking
With every new connection, Netcode for GameObjects (Netcode) performs a handshake in addition to handshakes done by the transport. This is to ensure that the N...

人数制限、タイミング制限に利用します。

チェック必要ないかと思っていけど、ゲーム中にも接続できてしまうので途中参加はできないようにしました。

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はゲーム開始時に変更しています。

コメント

タイトルとURLをコピーしました