Unity内部场景的加载分为两步:
- Loading。是指从文件、内存(主要是Streamed scene AssetBundle)中加载Scene的内容,创建并读取所有相关的Game objects、Assets以及Scene game managers。所有的IO操作都在这一步完成,所以它是比较耗时的过程。当这一步完成的时候,我们内部会将加载进度标记为90%。
- Awaking。主要是一些轻量级的操作,比如在Transform的Awaking的时候,我们会将Game objects加入到它所属于的Scene。我们这里所说的Scene加载过程中的Delay awaking就是指第二步。
比如用户有一个大场景划分成了若干个子场景,在所有场景加载完毕我们才会开始Game play。这时我们就可以推迟所有子场景的Awaking。当所有的加载第一步完成了,我们才进行所有场景的Awaking。
用户可以通过将AsyncOperation.allowSceneActivation设置成false来阻止Scene的Awaking,示例如下:
当加载进度AsyncOperation.progress到达90%的时候,就可以将allowSceneActivation设置成true来允许Scene awaking。
时间: 2024-10-25 12:55:49