1

Unity Multiplayer Tutorial之后的网络游戏项目中,应该如何将场景更改为新的关卡/地图,同时在一个总体主场景中保留相机/玩家 GO/健康等。(例如 Gameplay.unity 添加了 Level1.unity 或 Level2.unity)

所有相关的帮助似乎都是遗留代码、单人游戏解决方案或更专业的情况。当前的 Unity 5.5 文档建议使用 ServerChangeScene - 它似乎只提供了一半的解决方案。

是否存在诸如ServerAddSceneServerGetScene 之类的东西?

尝试的解决方案是在主场景中的已知 GameObjects 上使用DontDestroyOnLoad ,并在客户端 NetworkManager 之间保持currentMapNumber变量同步,当玩家到达关卡结束触发器时,该变量会更新。然后在Update()方法中检查并调用

networkManager.ServerChangeScene("Level" + networkManager.GetComponent<NetGame>().mapNumber);

或者

SceneManager.LoadScene("Level" + networkManager.GetComponent<NetGame>().mapNumber, LoadSceneMode.Additive);

两者都没有按预期工作。

4

1 回答 1

0

我可以通过使用此代码的附加场景加载来做到这一点。

[ClientRpc]
    public void RpcLoadLevelAcrossNetwork() {
        SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Additive);   
    }

ClientRpc 会将新场景加载到所有连接的客户端,并且附加场景加载将允许您保留相机/玩家 GO/健康等

于 2017-01-28T12:58:49.560 回答