在Unity Multiplayer Tutorial之后的网络游戏项目中,应该如何将场景更改为新的关卡/地图,同时在一个总体主场景中保留相机/玩家 GO/健康等。(例如 Gameplay.unity 添加了 Level1.unity 或 Level2.unity)
所有相关的帮助似乎都是遗留代码、单人游戏解决方案或更专业的情况。当前的 Unity 5.5 文档建议使用 ServerChangeScene - 它似乎只提供了一半的解决方案。
是否存在诸如ServerAddScene和ServerGetScene 之类的东西?
尝试的解决方案是在主场景中的已知 GameObjects 上使用DontDestroyOnLoad ,并在客户端 NetworkManager 之间保持currentMapNumber变量同步,当玩家到达关卡结束触发器时,该变量会更新。然后在Update()方法中检查并调用
networkManager.ServerChangeScene("Level" + networkManager.GetComponent<NetGame>().mapNumber);
或者
SceneManager.LoadScene("Level" + networkManager.GetComponent<NetGame>().mapNumber, LoadSceneMode.Additive);
两者都没有按预期工作。