2017-05-02 92 views
0

我是一个套接字编程和Unity的新手。 我推演示播放按钮这个简单的服务器代码统一超级简单网络服务器代码错误

using System; 
using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 
using UnityEngine.Networking; 

public class PaintServer : MonoBehaviour { 

    public bool isAtStart = true; 
    public int port; 
    // Use this for initialization 

    void Start() { 

     Debug.Log("Start"); 
     SetupServer(); 
    } 


    private void SetupServer() 
    { 

     if (NetworkServer.active) 
     { 
      Debug.Log("Server is already acitve"); 
      return; 

     } 
     NetworkServer.Listen(port); 

     Debug.Log("Listen Complete"); 

     // system msgs 
     NetworkServer.RegisterHandler(MsgType.Connect, OnServerConnect); 
     NetworkServer.RegisterHandler(MsgType.Disconnect, OnServerDisconnect); 
     NetworkServer.RegisterHandler(MsgType.Error, OnServerError); 


     DontDestroyOnLoad(gameObject); 
    } 

    public void OnServerConnect(NetworkMessage netMsg) 
    { 
     Debug.Log("PaintServer received client"); 
    } 
    public void OnServerDisconnect(NetworkMessage netMsg) 
    { 
     Debug.Log("PaintServerlost client"); 

    } 
    public void OnServerError(NetworkMessage netMsg) 
    { 
     Debug.Log("ServerError from Master"); 
    } 

    public void OnConnect(NetworkMessage netMsg) 
    { 
     Debug.Log("player connected!"); 
    } 

} 

我没有剧本,除了上面的代码后,得到了一个无限的错误。每当运行程序,有无限的错误消息,使得

主机标识出绑定ID的{0}最大的ID应该大于0且小于 {0} UnityEngine.Networking.NetworkIdentity:UNetStaticUpdate()

什么问题,我该如何解决?请帮帮我。

+0

您是否在巡视器中设置了端口变量? – Icewine

+0

@lcewine你是什么“在巡视员中设置端口”?我也做了一些可能的端口号,例如15000,6321,7894,但结果相同 –

+0

您将'port'设置为公共变量,所以我认为您可能忘记在检查器中设置数字。在测试时对变量进行硬编码并不是一个坏主意。一旦它工作,你可以公开如果你想。 – Icewine

回答

0

我有同样的问题,当Unity失去焦点(单击另一个窗口或桌面)时,该错误出现在控制台中。我通过将我的团结项目设置为“在后台运行”来解决此问题。

  1. 编辑 - >项目设置 - >播放器。
  2. 在分辨率和演示文稿部分查找“在后台运行”,并勾选它。

我希望这适用于你或另一个人在这个问题上。