允许所有客户端发送命令EXCEPT host client

时间:2017-10-24 22:22:48

标签: c# unity3d networking

有办法做到这一点吗?我想阻止运行在服务器(主机)上的本地客户端发送一些命令,同时允许所有远程客户端这样做。这可能吗?目前,以下代码在所有客户端上运行。有没有办法修改脚本使其以这种方式运行?谢谢!

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 个答案:

答案 0 :(得分: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";
    } 
}