Unity使用NetworkView无法连接的一种解决方法

来源:互联网 发布:制作生日快乐贺卡软件 编辑:程序博客网 时间:2024/06/05 15:18

void OnGUI(){switch (Network.peerType) {case NetworkPeerType.Disconnected:if (Condiction) {//such as a==bStartServer();}else{StartConnect(Ip,Port);}break;case NetworkPeerType.Server:OnServer();break;case NetworkPeerType.Client:OnClient();break;case NetworkPeerType.Connecting:Debug.Log("Connecting to room...");break;}}
这是一种常见的错误写法

debug提示“无法连接服务器端,可能是太快调用了Network.Disconnect(0)”

原因是OnGUI()每帧都会调用,在60FPS的情况里,一秒内就会被调用60次,也就是第一次与第二次的间隔16ms

这个间隔通常不足以让RPC完成连接的工作,造成第一次Connect还没返回成功的情况下(成功后才会修改NetworkPeerType),第二次请求就发出去了

如此就无法完成连接

解决的方法:

不要将StartConnect放在else中,可以使用if(GUI.Button)来触发,避免每次都触发

或者将这部分代码转译到Awake()或Start()中以使其仅触发一次

原创粉丝点击