游戏切换场景的时候竟然会通过加载界面来过渡,例如从A界面(选关)跳转到C界面(游戏),由于游戏界面有大量3d模型,需要加载时间,或者为了美观,我们都需要一个B场景来过渡。
其中有一点需要注意,你会发现跳转场景后,后者的游戏场景的灯光会变暗,而且还改不回原来的效果,这里需要对场景进行灯光烘培unity 异步加载场景,具体操作:Window-Lighting-Settings游戏运营,取消勾选Auto数据报告,然后building。他会在场景保存的当前目录生成一个文件夹,保存着场景的灯光贴图。
以下是loading界面挂载的脚本unity 异步加载场景,需要一个slider做的加载条
代码如下:
public class Loading : MonoBehaviour { private AsyncOperation async; int currProgress; public Slider loadingBar; private void Start() { StartCoroutine(loadScene()); } IEnumerator loadScene() { async = SceneManager.LoadSceneAsync("LevelScene"); //不允许加载完后立即跳转 async.allowSceneActivation = false; while(async.isDone&& async.progress < 0.8f) { //自己设置的游戏开始标志位,可删去 Global.gameStart = true; yield return async; } } private void Update() { ////// 这里copy的网上代码,懒得写逻辑了,具体思路是,获取异步加载的进度 /// 如果小于0.8(因为0.8异步加载就算完成了),得到异步加载进度的百分制进度,及乘以100以得到小于80的数 /// 如果超过了0.8,即异步加载完成,但是前面不允许加载完立即跳转,因为这样会让加载场景存在时间过短 /// 需要让玩家看到一个需要合理的加载时间的界面 /// 如果当前进度小于异步加载的进度,当前进度++,给加载条UI的值赋值,如果大于说明加载条也走到了80,当异步加载进度完成后,就允许跳转了 /// int progressBar = 0; if (async.progress < 0.8) progressBar = (int)(async.progress * 100); else progressBar = 100; if (currProgress <= progressBar) { currProgress++; loadingBar.value = currProgress; } else { if (progressBar == 100) async.allowSceneActivation = true; } } }
来自: