【发布时间】:2019-05-17 08:40:39
【问题描述】:
我在我的游戏中使用旧的 Unity 2017.3 UNET 实现。玩家连接到服务器并被放置在大厅场景中,直到派对领袖选择另一个级别去。该实现只是默认 NetworkLobbyManager 的略微修改版本。
现在问题开始了,因为我已经开始大量测试网络代码,方法是为客户端运行已编译的构建,然后将编辑器用作服务器。很多时候,在编辑器中运行的服务器会比编译的客户端构建慢很多。因此,当我使用NetworkManager.ServerChangeScene 时,客户端将在服务器之前加载场景,这将导致客户端场景上的所有 NetworkIdentities 都被禁用(因为它们尚未在服务器上创建。)
如果服务器正在运行已编译的构建,则发生这种情况的可能性要小得多,因为服务器几乎总是会在任何客户端之前加载场景。但它确实暴露了 Unity 本身的一个更大的问题。无法保证切换场景时服务器可用。
在网络游戏中还有其他改变场景的方法吗?有没有办法保证服务器在任何客户端之前进入场景?还是我只是希望网络在场景变化之间保持稳定?
【问题讨论】:
标签: unity3d networking unity3d-unet