学习动态加载游戏场景和异步加载游戏场景

 

<span style="color:#3333ff">加载游戏场景,首先要引入场景管理的命名空间:using UnityEngine.SceneManagement;  
而后在调用你须要加载的游戏场景在SceneManage.LoadScene();  这个方法是有四种重载的 </span>
using UnityEngine.SceneManagement; //记住必定要引入场景管理的命名空间

public class Scene : MonoBehaviour 
{

	
	void Start () 
        {
	
	}
	
	
	void Update ()
         {
	
	 }

    public void Scene()
    {
        SceneManager.LoadScene(0);//加载索引值是0的游戏场景
    }
}
using UnityEngine;
using System.Collections;
using UnityEngine.SceneManagement; //记住必定要引入场景管理的命名空间

public class Scene : MonoBehaviour 
{

	
	void Start () 
        {
	
	}
	
	
	void Update ()
         {
	
	 }

    public void Scene()
    {
        SceneManager.LoadScene(0);//加载索引值是0的游戏场景
    }
}


 

 

 

 

 

LoadSceneMode:加载场景的模式异步

 

下面是我学习的异步加载场景的学习路程,我只是记录本身的学习过程,小白一个,若是有不对的地方还但愿你们能够指出,我必定认真学习。学习

 

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.SceneManagement;

public class LoadScence1 : MonoBehaviour {
    public Image imageProcress;//滚动条
    public Text imageText;//进度显示文本
    private int processNumber;//临时存储进度用来控制进度条的滑动,由于本身定义能够从零开始可控制
    private int currentProcessNumber;//最终text文本显示的数字
    public AsyncOperation result;//加载结果
	
void Start ()
{
        StartCoroutine(LoadScene());   //调用接口
	}
	
	
void Update () 
    {
        if (result == null)//确保必定得到加载结果,其实加不加均可以可是要保持逻辑的严谨性
        {
            return;
        }

        //数据在加载到90%的时候,暂停了。使用临时变量来存储内部数据加载结果。以90%做为分界点,分开处理
        if (result.progress < 0.9f)  //0.9f须要加f不加的话processNumber的值一直是0
        {
            processNumber = (int)result.progress * 100;

        }
        else
        {
            processNumber = 100;
        }

        if (currentProcessNumber < processNumber)
        {
            currentProcessNumber++;
            imageText.text = currentProcessNumber + "%";//显示数字
            imageProcress.fillAmount = currentProcessNumber / 100f;//保持进度条同步滚动

        }


        if (currentProcessNumber == 100)
        {
            result.allowSceneActivation = true;//内部数据的加载和外部数据显示  同步的时候,要加载的场景被激活
        }
	}

    //接口的使用
    IEnumerator LoadScene()
    {

        result = SceneManager.LoadSceneAsync("BagSystem2");//异步加载场景而后他返回一个值,这个值能够用来给Progress赋值,这个值能正好在0-1之间

        //allowSceneActivation意思就是尽快的显示下一个场景
        result.allowSceneActivation = false;//不激活下一个场景,意思就是其实当进度条加载到90%的时候就直接跳转到了游戏场景,90%-100%是不显示的
                                            //可是这样不符合常理,咱们要让进度条走完须要手动控制,不让他自动加载
        yield return null;//返回结果


    }
}