loading界面挂载的脚本,需要一个slider做的加载条代码

loading界面挂载的脚本,需要一个slider做的加载条代码

游戏切换场景的时候竟然会通过加载界面来过渡,例如从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;
        }
    }
}

来自:

文章来源:http://gameinstitute.qq.com/community/detail/127136