经过2天的研究,终于搞定了房间创建。
但是有一些问题,虽然解决了,但是总觉得我的解决方法不对。
1、大厅界面中,需要不停的接收其他机器的广播,然后创建房间列表(不需要广播)。创建房间的场景,需要不停的广播自己的房间信息,但是不需要接收其他机器的广播。因此,当用户切换场景时,就需要动态的关闭和启动UDPClient,但是我发现,这玩意启动了之后就不好停止,使用 UdpClient.Close()进行关闭,但是往往关闭不充分,再次想打开时,就提示“通常只能对一个端口绑定一次....之类的”,网上查了很多资料,说是用Dispose()释放资源,但使这个方法不是public型的,没法调用。
我现在的解决方法是,调用完close之后,将udpclient赋值为null,然后再次打开时,try catch掉异常,不停的重试监听,直到成功。while( udpclient == null ) udpclient = new UdpClient(......) ;这样。。。
2、同一个机器只能有一个程序绑定特定的端口,另一个程序再绑定时就会异常。所以没法在一台机器上测试,因为前面死循环重启udpclient的缘故,所以一旦在同一个机器上启动了两个游戏,第二个肯定会无响应。。。只能在虚拟机上测试。真是很麻烦。
3、关于地图的问题。我的想法是,当客户端上没有服务器房间的那个地图时,就会自动去服务器下载游戏地图。但是我发现,不同的平台,路径都不一样。甚至Editor模式下和发布后的项目资源路径也不同,真不知道这个大家怎么破。。希望大神给点指点。