2017-10-24 5 views
0

これを行う方法はありますか?私は、サーバー(ホスト)上で動作しているローカルクライアントがいくつかのコマンドを送信するのを防ぎ、すべてのリモートクライアントがそうするようにしたい。これは可能ですか?現在、以下のコードはすべてのクライアントで実行されています。このように機能させるためにスクリプトを変更する方法はありますか?ありがとうございました!すべてのクライアントにコマンドの送信を許可するホストクライアントを除く

using UnityEngine; 
using UnityEngine.UI; 
using UnityEngine.Networking; 

public class Player_Data : NetworkBehaviour 
{ 

    private void Start() 
    { 
     if (!isLocalPlayer) 
     { 
      return; 
     } 

     CmdSendServerData(); 
    } 

    [Command] 
    void CmdSendServerData() 
    { 
     DisplayDataOnScreen("CmdSendServerData Called"); 
    } 

    [Server] 
    void DisplayDataOnScreen(string data) 
    { 
     GameObject infoDisplayText = GameObject.Find("InfoDisplay"); 
     infoDisplayText.GetComponent<Text>().text += data + "\n"; 
    } 
} 

答えて

1

isServerプロパティを使用します。あなたはcammandコールの前にそれをチェックすることができます。

public class Player_Data : NetworkBehaviour 
{ 
    private void Start() 
    {  
     if (isLocalPlayer && !isServer) 
     { 
      CmdSendServerData(); 
     } 
    } 

    [Command] 
    void CmdSendServerData() 
    {    
     DisplayDataOnScreen("CmdSendServerData Called");   
    } 

    [Server] 
    void DisplayDataOnScreen(string data) 
    { 
     GameObject infoDisplayText = GameObject.Find("InfoDisplay"); 
     infoDisplayText.GetComponent<Text>().text += data + "\n"; 
    } 
} 
関連する問題