【问题标题】:Allow all clients to send Commands EXCEPT host client允许所有客户端发送命令,除了主机客户端
【发布时间】:2017-10-24 22:22:47
【问题描述】:

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

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";
    } 
}

【问题讨论】:

    标签: c# unity3d networking


    【解决方案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";
        } 
    }
    

    【讨论】:

      猜你喜欢
      • 2012-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-08
      • 2012-10-18
      • 1970-01-01
      • 1970-01-01
      • 2014-07-29
      相关资源
      最近更新 更多