当使用NetworkManager.ServerChangeScene()
从第 1 阶段切换到第 2 阶段时,玩家被摧毁并且在第 2 阶段加载时不存在。没有错误,并且场景确实更改成功。
什么可能导致这种情况?
这是我更改场景的代码:
[ServerCallback]
public void LoadOnline (string sceneName) {
NetworkManager.singleton.ServerChangeScene (sceneName);
}
当使用NetworkManager.ServerChangeScene()
从第 1 阶段切换到第 2 阶段时,玩家被摧毁并且在第 2 阶段加载时不存在。没有错误,并且场景确实更改成功。
什么可能导致这种情况?
这是我更改场景的代码:
[ServerCallback]
public void LoadOnline (string sceneName) {
NetworkManager.singleton.ServerChangeScene (sceneName);
}
为了从第 1 阶段到第 2 阶段保持持久的游戏对象(或玩家),您需要在对象的 Awake 或 Start 方法中添加对 DontDestroyOnLoad 的调用。请参阅https://docs.unity3d.com/ScriptReference/Object.DontDestroyOnLoad.html。
这也将对您之前如何设置玩家在场景文件中的位置提出挑战。我一直在使用的一种方法是在每个阶段创建一个带有标签(如 RespawnPoint)的空游戏对象,该标签用于在场景更改后设置玩家的位置(可以在调用 ServerChangeScene 后的某个地方处理)。