我们在制作的时候,遇到切换场景的时候,一般直接使用
SceneManager.LoadScene("你要加载的场景名称")
这样加载新场景是没有问题的,但是如果目标场景中要加载的内容很多unity 场景切换,就会出现卡顿的情况。
所以我们就有了做加载场景的需求,让场景切换看起来自然。
解决方法是使用异步加载场景材质材料,等下一个场景加载完成后再切换。
我们需要制作一个 UI 来指示在切换之前正在加载。您可以根据需要制作此 UI。
一般来说3D素材,这个UI是需要隐藏的,你可以用自己的方式来处理隐藏。这里我直接setActivate。
接下来我们定义
输入场景(字符串场景名),需要的时候调用
协程预加载场景(字符串场景名称)
这里需要使用协程来加载unity 场景切换,以保证主程序的正常运行。不使用协程预加载是没有意义的。
在协程中,我们首先需要显示加载界面。
然后开始预加载。这里使用了UnityEngine.SceneManagement的命名空间,我们会得到一个加载状态的返回值。
然后判断返回的加载状态,加载完成后切换到下一个场景。
这是最基本的开关,加载完成后会自动切换。
在此基础上可以读取当前加载进度,返回值在0-0.9之间。当该值达到0.9时,表示加载完成。
通过设置该属性的bool值,可以控制加载完成后是否自动切换到下一场景。
比如通过下面的写法,可以在loading后等待播放器输入任意键进入下一个场景。
七彩紫色泛羽
公共课测试:MonoBehaviour
{
publicGameObject 加载场景GameObject;
public void 进入场景(字符串场景名称)
{
StartCoroutine(预加载场景(场景名称));
}
IEnumerator 预加载场景(字符串场景名称)
{
加载 sceneGameObject.SetActive(true);
AsyncOperation 加载操作 = SceneManager.LoadSceneAsync(场景名称);
while(!加载操作.isDone)
{
收益返回空;
}
}
}