void OnGUI(){
switch (Network.peerType) {
case NetworkPeerType.Disconnected:
if (Condiction) {//such as a==b
StartServer();
}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()中以使其仅触发一次