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

兽人永不为奴!!!联盟狗们,拔剑吧!!!
这里写图片描述

那个啥,言归正传。

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

同步加载
:加载完毕新场景才会继续执行别的事
这里写图片描述
这里写图片描述

异步加载
:在后台加载新的场景,在此过程中还可以执行其他的事情
这里写图片描述
这里写图片描述

值得注意的是:异步加载虽然在后台加载,但是,因为程序对内存进行大量的操作,所以依然会有一定的卡顿(例如:我叫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一致
    //设计以场景名称和场景索引的静态函数


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

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

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

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值