异步加载和同步加载Unity加载过度画面

兽人永不为奴!!!联盟狗们,拔剑吧!!!
异步加载和同步加载Unity加载过度画面_第1张图片

那个啥,言归正传。

首先看一下Unity的两个加载函数

同步加载
:加载完毕新场景才会继续执行别的事
异步加载和同步加载Unity加载过度画面_第2张图片
异步加载和同步加载Unity加载过度画面_第3张图片

异步加载
:在后台加载新的场景,在此过程中还可以执行其他的事情
异步加载和同步加载Unity加载过度画面_第4张图片
异步加载和同步加载Unity加载过度画面_第5张图片

值得注意的是:异步加载虽然在后台加载,但是,因为程序对内存进行大量的操作,所以依然会有一定的卡顿(例如:我叫MT2进入画面)

同步加载比较简单
调用函数即可

Application.LoadLevel("SceneName");
Application.LoadLevel("SceneIndex");

异步加载相对比较麻烦
首先,利用NGUI建立一个UISlider组件,将其前景预制件UISlider和显示加载百分比的UILabel
其次,添加如下代码:

using UnityEngine;
using System.Collections;

public class LoadingScene : MonoBehaviour {

    //静态字符串保存要加载的场景名字
    public static string LoadingName;
    //静态int类型保存要加载的场景索引
    public static int LoadIndex;

    //引用UI组件
    public UISlider slider;
    public UILabel lable;

    //声明一个异步进度变量
    AsyncOperation asyn;



    // Use this for initialization
    void Start () {

        if (slider == null || lable == null)
        {
            Debug.Log("Error");
        }
        else 
        {
            Debug.Log("Successful");
        }

        //进入这个场景就立即协程加载新场景
        StartCoroutine("BeginLoading");

    }

    // Update is called once per frame
    void Update () {

        //更新UI
        slider.value = asyn.progress;
        //加载进度
        lable.text = (slider.value * 100).ToString(".00");

    }

    //加载目标场景的函数
    IEnumerator BeginLoading()
    {
        if (LoadingName == null)
        {
            asyn = Application.LoadLevelAsync(LoadIndex);
        }
        else 
        {
            asyn = Application.LoadLevelAsync(LoadingName);
        }
        yield return asyn;
    }


    //设计一个封装好的静态函数,为了和Unity一致
    //设计以场景名称和场景索引的静态函数


    /// 
    /// 异步加载函数
    /// 
    /// 场景名称
    public static void LoadNewScene(string value)
    {
        LoadingName = value;
        Application.LoadLevel(LoadingName);
    }

    /// 
    /// 异步加载函数
    /// 
    /// 场景索引
    public static void LoadNewScene(int value)
    {
        LoadIndex = value;
        Application.LoadLevel(LoadIndex);
    }
}

欢迎关注我的微信个人订阅号
这里写图片描述
每天多学一点0.0

你可能感兴趣的:(unity)