上篇 AssetBundle(四) Tolua对接

下篇 :待续

SceneManager.LoadScene 是Unity内置的场景加载接口,在UnityEngine.SceneManagement.命名空间下。

这个接口是同步接口,但正因为是同步接口,很容易给人造成误解。接着就会出现奇怪的现象

从一个场景切换到另一个场景用(UnityEngine.SceneManagement.SceneManager.LoadScene)后,然后加载一个prefab,Instantiate这个prefab 后,在场景里看不到, 但Instantiate的对象并不为空。

代码如下:

切换到场景scene_2,加载一个 cube。结果最后场景里没有这个cube。这代码看起来很正常。

AssetBundle(五) 关于SceneManager.LoadScene

AssetBundle(五) 关于SceneManager.LoadScene

AssetBundle(五) 关于SceneManager.LoadScene

这个问题的关键在于加载场景LoadScene是同步,但处理新场景,实例化,初始化新场景不是同步。因此SceneManager提供一了个回调函数sceneLoaded。在回调函数中执行后续的工作,比如加载cube之类。只有在这个回调函数中,才能确保加载新场景的流程已经结束。

public static event UnityAction<Scene, LoadSceneMode> sceneLoaded;

给出正确的代码如下:

AssetBundle(五) 关于SceneManager.LoadScene

这里写的是AssetDatabase接口,Bundle接口也需要类似的处理

 

相关文章:

  • 2021-04-18
  • 2021-12-21
  • 2021-04-12
  • 2021-04-13
  • 2021-07-02
  • 2021-06-22
  • 2022-01-24
猜你喜欢
  • 2021-09-24
  • 2021-11-13
  • 2022-12-23
  • 2021-04-29
  • 2022-12-23
  • 2021-11-24
相关资源
相似解决方案