【问题标题】:Determine if player is the host or the client确定播放器是主机还是客户端
【发布时间】:2016-04-08 21:20:55
【问题描述】:

我想为服务器字符和客户端字符分配特定信息。现在,我如何知道播放器是主机还是客户端?我尝试使用 isServerisClient,但它都返回 true。这些是我应该使用的正确关键字吗?

void Update () {
        if(isServer){
            Debug.Log("I'm the server");
        }

        if(isClient){
            Debug.Log("I'm the client");
        }
}

【问题讨论】:

  • 你的类是否继承自 NetworkBehaviour ?
  • 是的,它继承自 NetworkBehaviour。

标签: networking unity3d multiplayer


【解决方案1】:

如果您以“主机”的身份进行连接,那么您实际上是同时是“客户端”和“服务器”。这与运行“专用服务器”形成对比,“专用服务器”充当服务器权限,但不代表“客户端”连接。就像您在自己的答案中建议的那样,您可以使用isServer!isServer,或者可能:

void Update() {
    if (isServer) {
        Debug.Log("I'm the server (or host)");
    } else {
        Debug.Log("I'm the client");
    }
}

【讨论】:

    【解决方案2】:

    我没有使用isClient 来确定玩家是否是客户端,而是使用!isServer

    void Update () {
            if(isServer){
                Debug.Log("I'm the server");
            }
    
            if(!isServer){
                Debug.Log("I'm the client");
            }
    }
    

    【讨论】:

      【解决方案3】:

      不确定这是否适用于所有情况,如果不适用,我深表歉意 - 我正在使用一个名为 NATTraversal for Unity 的插件,我遇到了类似的问题。我需要找到哪个连接是主机。但是对我来说,因为我没有使用中继服务器(这是给你们那些避免中继的人)我发现我可以做这个检查..

      using UnityEngine.Networking;
      
      void Start(){
          if(NetworkServer.connections.Count > 0){
              Debug.Log("This is the host.");
          } else {
              Debug.Log("This is a client.");
          }
      }
      

      这在我的场景中有效,因为客户端的连接列表是空的,但主机的不是。很可能有更好的方法来做到这一点,但我不知道没有以前构建的 NetworkIdentity 列表的方法。

      Network.isServer 布尔值总是为我返回 false,所以这就是我解决它的方法。希望它可以帮助那里的人。

      编辑:(添加关键信息) 请注意,这是在配对和连接建立之后。

      我发现的另一种方法是在 NATLobbyManager 中监听 OnServerConnect。

      public override void OnServerConnect(NetworkConnection conn){ }
      

      该事件仅针对具有 NATTraversal 插件的主机触发,更多信息可供任何在尝试解决所有这些问题时可能遇到此问题的人使用。 :)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-05-24
        • 2021-03-01
        • 2015-11-04
        • 2018-06-06
        • 1970-01-01
        • 2020-01-20
        • 2011-04-30
        相关资源
        最近更新 更多