栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > 其他

unity异步加载跳转场景

其他 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

unity异步加载跳转场景

本文结合unityAPI书写综合,并且但不限于网络相关内容资料整合而成。

AsyncOperation是unity当中的异步操作协同程序

其中的变量:

allowSceneActivation:是否(true/false)允许在场景准备就绪后立即跳转场景

isDone:该操作是否已经完成(返回一个true/false)

priority:调整您的异步加载顺序

progress:获取当前操作进度

unity官网API参见:

Unity 脚本 API---AsyncOperationhttps://docs.unity3d.com/cn/2020.2/ScriptReference/AsyncOperation.html那么接下类我们来说说用法

首先你需要知道的

1.上面四个变量的大致作用

2.progress:这里面有这样一个说法“当进度浮点值到达 1.0 并调用 isDone 时,操作结束。如果将 allowSceneActivation 设置为 false,则进度将在 0.9 处停止,直到被设置为 true”

然后我们开始操作,代码如下:

using UnityEngine.SceneManagement;//添加引用的
using UnityEngine.UI;//添加引用的

    public Button but;//声明了一个按钮
    public GameObject obj;//声明了一个对象
    public Slider slider;//声明了一个进度条
    public Text text;//显示文字

ok,那么到这里先来说说我要做什么

点击面板中的一个“按钮”,然后会出来一个“进度条”进行加载,在加载的时候会显示一个“text的百分比”,接着就加载到另一个场景中了。

然后我在“Start”函数当中做了个按钮点击

        but.onClick.AddListener(() => 
        {
            obj.SetActive(false);//隐藏按钮面板
            this.gameObject.SetActive(true);//显示进度条面板
            Loadybjz();//调用异步加载函数
        });

接着我在里面只写了

     public void Loadbjz()
    {
        StartCoroutine(Loadlev());//开始协同程序
    }

这里请注意不要写在Update之类的函数当中,否则会出问题!!!(想了解具体的可以自行百度)

   IEnumerator Loadlev()//协程
    {

        AsyncOperation operation = SceneManager.LoadSceneAsync(SceneManager.GetActiveScene().buildIndex+1);//携程函数=加载下一个场景的编号
        operation.allowSceneActivation = false;//进度条加载完后不进行操作
        while (!operation.isDone)//如果没有完成
        {
            slider.value = operation.progress;//将 operation(当前进度)给滑动条赋值
            text.text = operation.progress*100+"%";//显示百分比 

            if (operation.progress>=0.9f)//如果当加载进度大于等于0.9时执行
            {
                slider.value = 1;//进度条满
                text.text = "100%";//文本百分比为100
                operation.allowSceneActivation = true;//将进度条修改为加载完后进行跳转
            }

            yield return null;//暂缓一帧,在下一帧接着往下处理
            //yield return null(不管你return后面写的数字是多少执行的都一样)
        }
    }

现在我们的电脑配置通常比较好,所以一般情况下只有在下一个场景地图比较大,需要加载时间才会出现我们写的进度条,通常情况下直接嗖一下就过去了

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/906415.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号