从侦听器调用时如何更改 Unity 中的场景?

米卡德

因此,正如我在此处被告知的那样,我无法从 Update() 函数调用场景更改。好的,否则我如何实现场景更改逻辑?

例如,在 Update() 内部,我正在侦听来自服务器的响应和请求:

private void Update() {

// A bunch of parsing stuff

switch (DataFromServer) {

   case "ServerAllowedSceneChange":

      SceneManager.LoadScene(DataFromServer[2]);
      break;

   }

}

这就是我对实现逻辑的看法,但是,Unity 似乎不是这样做的。有人可以就如何以 Unity 的工作方式做类似的事情提出建议 :)

这种实际上有效的方法的缺点是,当我这样称呼它时,场景还没有准备好进行处理。在场景更改调用之后,我尝试访问尚不存在的对象。并且所有关卡完成加载检查都不起作用。

所以如果我们回到代码示例,如果我这样做:

switch (DataFromServer) {

   case "ServerAllowedSceneChange":

      SceneManager.LoadScene(DataFromServer[2]);
      GameObject objectFromSceneImSwithcingTo = GameObject.Find("objectFromSceneImSwithcingTo").gameObject;
      break;

   }

我从 Unity 收到 NullReference 错误。

西门说

SceneManager API 具有您可以订阅场景更改的事件。例如:

  using UnityEngine.SceneManagement;

  void OnEnable() 
  {
      SceneManager.sceneLoaded += OnSceneLoaded;
  }

  void OnDisable() 
  {
      SceneManager.sceneLoaded -= OnSceneLoaded;
  }

  private void OnSceneLoaded(Scene scene, LoadSceneMode mode) 
  {
      // all objects are loaded, call other methods
  }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Unity中的场景之间传递数据

Unity中的LoadScene()函数何时更改场景?

在Unity中,是在游戏开始之前还是场景开始之前调用Awake()?

在Unity中更改场景或使用不同的ui屏幕是否更有效率?

Unity中完全黑暗的场景

Unity Android:如何在缓存中预加载场景

如何在Unity中完全重置ARKit场景

重新载入Unity中的场景后,Google Admob奖励视频回调被多次调用

如何在Unity中的场景之间转移数据?

我可以在Unity编辑器中以编程方式加载场景吗?

Unity编辑器如何显示场景中的变换

unity在另一个脚本/场景中更改对象的文本

如何在Unity中通过Agora.io使用场景摄像机

Unity-如何从场景1传输对象并在场景2中实例化?

unity场景更改后如何重置分数?

Unity中的全局变量(在所有场景中更改字体大小,颜色)

如何使AI仅移向场景中活动的对象(Unity Engine)

将其构建到移动设备后无法更改为Unity中的特定场景

在Unity中更改JS脚本,以便更改场景

如何在Unity 5中使用场景管理器移动到下一个场景?

如何在Unity中通过单击按钮将对象添加到场景?

如何在Unity3D中为每个场景强制定位

在 Unity 中的两个不同场景中更改相机

Unity,如何取消/激活其他场景中的组件

在 Unity3D 场景中更改 Android 状态栏颜色

如何动态地在 Unity 中的场景之间保持分数?

如何通过 Unity 中的 2 个场景共享分数

如何使用代码更改 Unity 中的场景

在 Unity 的 UnloadAsync 调用中卸载相同的场景索引时,使用 LoadSceneMode.Additive 加载场景是否安全?