在Unity Multiplayer Tutorial之后的网络游戏项目中,如何在一个总体主场景中保留相机/玩家GO /健康状况等的情况下,如何将场景更改为新的关卡/地图。 (例如,添加了Level1.unity或Level2.unity的Gameplay.unity)
所有相关帮助似乎都是遗留代码,单人游戏解决方案或更专业的环境。当前的Unity 5.5文档建议 ServerChangeScene - 它似乎只提供了一半的解决方案。
是否存在类似 ServerAddScene 和 ServerGetScene 的内容?
尝试的解决方案一直在主场景中的已知GameObjects上使用 DontDestroyOnLoad ,并保持在客户端NetworkManagers之间同步的 currentMapNumber 变量,当玩家到达终点时,该变量会更新级别触发器。然后在 Update()方法中检查并调用
networkManager.ServerChangeScene("Level" + networkManager.GetComponent<NetGame>().mapNumber);
或
SceneManager.LoadScene("Level" + networkManager.GetComponent<NetGame>().mapNumber, LoadSceneMode.Additive);
两者都没有按预期工作。
答案 0 :(得分:0)
我能够通过添加场景加载我使用此代码。
[ClientRpc]
public void RpcLoadLevelAcrossNetwork() {
SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Additive);
}
ClientRpc会将新场景加载到所有连接的客户端,添加场景加载将允许您保存摄像机/播放器GO /健康状况等