Unity加载场景的四种方式
作者:纸片
csharp 1.Application.LoadLevel :同步载入 ,如果当前场景为A,我们要切换到场景B,unity会在切换场景的时候将场景B中的全部内容(场景B中全部的静态物体,不包含兴许代码中Instantiate实例化的物体)都载入到内存中。然后销毁A,显示B。 2.Application.LoadLevelAsync :异步载入 ,这个与第一种情况基本一样,唯一的差别是载入B的过程是异步的(也就是载入新场景的行为是在一个后台线程中进行的。不影响主线程的执行),这样在载入B的时候当前场景A不受影响,能够继续执行,所以即使场景B非常大也不会感觉到卡顿。 3.Application.…
csharp 1.Application.LoadLevel :同步载入 ,如果当前场景为A,我们要切换到场景B,unity会在切换场景的时候将场景B中的全部内容(场景B中全部的静态物体,不包含兴许代码中Instantiate实例化的物体)都载入到内存中。然后销毁A,显示B。 2.Application.LoadLevelAsync :异步载入 ,这个与第一种情况基本一样,唯一的差别是载入B的过程是异步的(也就是载入新场景的行为是在一个后台线程中进行的。不影响主线程的执行),这样在载入B的时候当前场景A不受影响,能够继续执行,所以即使场景B非常大也不会感觉到卡顿。 3.Application.LoadLevelAddictive :同步附加式载入 ,如果当前场景是A,我们要载入场景B,unity在载入B的时候不会销毁A,也就是说载入结束之后A和B将同一时候存在,这个适合于世界地图比較大的时候。依据人走到的位置来动态的载入世界地图中的不同部分。当然前提是将世界地图做成多个不同的scene文件。 4.Application.LoadLevelAddictiveAsync :异步附加式载入,这样的情况与上一种基本一样,差别仍然在于载入B的过程是在一个后台线程中异步进行的。 SceneManager场景类 SceneManager.LoadScene 加载下一个场景,一般是用在另一个场景不是太大的情况下 SceneManager.LoadSceneAsync 异步加载下一个场景,返回AsyncOperation类型,里面包含了加载的信息,加载的进度条等等。可以让用户缓解等待加载场景的时间 sceneCount 获得当前加载的场景个数 sceneCountInBuildSettings 在Build面板中加载的场景个数 GetActiveScene 获取已经加载的当前场景的信息 GetSceneAt index 加载index索引的场景 当加载新的场景的时候会触发下面的事件: activeSceneChanged 当有新场景被加载的时候就会调用这个事件 sceneLoaded 当有新场景加载完成的时候就会触发这个事件 当加载新的场景的时候会触发下面的事件: activeSceneChanged 当有新场景被加载的时候就会调用这个事件 sceneLoaded 当有新场景加载完成的时候就会触发这个事件 扩充:事件的注册时通过加方法来进行注册的: SceneManger.activeSceneChanged+=OnAcitiveScenenChanged; DontDestroyOnLoad(GameObject);//加载场景 不删除 括号里物体
#Unity#Unity代码