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

Unity
Page Not Found | Unity Multiplayer Networking

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

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

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をコピーしました