unity场景加载,及协同程序

unity中场景加载中有:同步加载和异步加载

首先需要在File->Building Setting中设置添加场景,把需要的场景托到Scenes In Build里


然后设置触发条件,比如点击一个button响应一个方法,这个方法就是跳转到下一个场景

public void NextScene()
    {

//也可以加载索引
        Application.LoadLevel("yourScene");//:同步加载,加载后,前一个场景的东西都将被销毁
    }

下面说说场景加载的几个方法:4种

//异步:也就是加载新场景的行为是在一个后台线程中进行的,不影响主线程的运行,

这样在加载B的时候当前场景A不受影响,可以继续运行,即使场景B很大也不会感觉到卡顿。


Application.LoadLevelAsync ("yourScene");//异步加载,加载后,前一个场景的东西都将被销毁

Application.LoadLevelAdditive ("yourScene");//同步附加式加载 ,不会销毁前一个场景的东西

Application.LoadLevelAdditiveAsync ("yourScene");//异步附加式加载 ,不会销毁前一个场景的东西


下面是一个协同程序:可以用来给进度条场景,用来读取下一个场景的加载进度,

public void NextScene()
    {

//也可以加载索引
        Application.LoadLevel("进度条场景");
    }


进度条场景,脚本可以挂在,摄像机上

//异步对象
AsyncOperation async ;

    void Start()//自动执行的方法

    {
        StartCoroutine (loadScene ());//开启一个协同程序,需要传一个IEnumerator类型的方法

或者是字符串(方法的名字)
    }


IEnumerator loadScene()//被调用的方法,

    {
        async = Application.LoadLevelAsync ("Loading1");

//这里在方法里开启一个异步加载页面,

//异步加载返回一个异步对象,可以用来读取加载进度 async.progress 

//利用这个返回的值可以在Update里写读取进度,当然也的用到(NGUI)

//progress 的取值范围在0.1 - 1之间, 但是它不会等于1
//也就是说progress可能是0.9的时候就直接进入新场景了

         yield   return   async ;
    }
        

下面是一个完整的进度条脚本

using UnityEngine;
using System.Collections;

public class Loading1 : MonoBehaviour {
    private AsyncOperation asy;
    public UIProgressBar pro;

    // Use this for initialization
    void Start () {
        if (pro) {
            pro.value = 0;
        }
        StartCoroutine (jumpscene ());

    
    }
    
    // Update is called once per frame
    void Update () {
//        if (asy.progress < 0.9f) {
//            pro.value = asy.progress;
//        } else {
//            pro.value = 1;
//        }

        pro.value += 0.01f;
        if (pro.value.Equals(1)) {
            Application.LoadLevel ("HeroChoose");
        }
    
    }

    IEnumerator jumpscene(){
        //asy = Application.LoadLevelAsync ("HeroChoose");
        yield return asy;
    }
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值