最近使用unity自带的network组件开发一款双屏互动应用,因为是局域网的,用unet还是非常便捷的,但做好之后测试发现断线重连功能不好实现,查找官方文档,终于解决,以下是代码:
- 首先开启服务器
public Text tex;
void start(){
Network.StartServer(10,7777,false);
}
public void OnPlayerConnected(NetworkPlayer player){
tex.text="一个玩家连接了";
}
2.客户端自动重连方法
//启动时连接服务器
public Text tex;
void start(){
Network.Connect("127.0.0.1",7777)
tex.text="连接中";
}
//连接未成功重连
public void OnFailedToConnect(NetworkConnectionError error){
tex.text="连接未成功,重连中";
Network.Connect("127.0.0.1",7777);
}
//当从服务器断开连接
public void OnDisconnectedFromServer(NetworkDisonnection info){
//使用协程
tex.text="掉线了,开始重连";
StartCoroutine("reConnect");
}
IEnumerator reConnect(){
yield return new WaitForSeconds(2);
Network.Connect("127.0.0.1",7777);
}
//连接上服务器时
public void OnConnectedToServer(){
tex.text="连接服务器成功";
}
两个脚本分别打包出服务端和客户端,测试,服务器关闭、断网,客户端都会等待重连,服务器开启后连接成功。
寥寥几行代码,实现重连功能还是很兴奋的。欢迎评点指正,共同进步。若有不懂的可以下方评论。