UNETの「Send」でクライアント間でメッセージのやり取りを行うために、「NetworkBehaviour」を継承したクラスに以下のコードをアタッチしたオブジェクトを生成。Player Prefubに登録しています。
C#
1const short msg_id = 12345; 2 3private void Start(){ 4foreach(NetworkClient nc in NetworkClient.allClients){ 5nc.RegisterHandler(msg_id, SendLog); 6} 7} 8 9public void SendLog(NetworkMessage log){ 10var recvMsg = log.ReadMessage<StringMessage>(); 11Debug.Log("SendLog:" + recvMsg.value); 12} 13 14void Update(){ 15if (Input.GetMouseButtonDown(0)) { 16var msg = new StringMessage("マウス押した"); 17NetworkServer.SendToAll(msg_id,msg); 18} 19}
Startで関数を登録(RegisterHandler)し、マウスを押すと登録した「SendLog」関数を呼び出す、というものです。
しかし、上記のコードでホストを作成し、そこにクライアントを1つ接続した状態で、ホスト、クライアントでそれぞれマウスのボタンを押すと、
ホストでは「全てのクライアントでSendLogが2度呼ばれる(Debug.Logが2度行われる)」
クライアントでは「全てのクライアントで一度も呼ばれない(Debug.Logが1度も行われない)」
といった動作をしてしまい、ホストで無いクライアントからメッセージを送ることが出来ません。
どのような修正をすれば意図した動作になるでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。