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

 

加载游戏场景,首先要引入场景管理的命名空间:using UnityEngine.SceneManagement;  
然后在调用你需要加载的游戏场景在SceneManage.LoadScene();  这个方法是有四种重载的 

using UnityEngine;
using System.Collections;
using UnityEngine.SceneManagement;  //记住一定要引入场景管理的命名空间

public class Scene : MonoBehaviour 
{

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

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

public class Scene : MonoBehaviour 
{

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

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


学习动态加载游戏场景和异步加载游戏场景_第1张图片

 

 

 

 

 

LoadSceneMode:加载场景的模式

学习动态加载游戏场景和异步加载游戏场景_第2张图片

 

下面是我学习的异步加载场景的学习路程,我只是记录自己的学习过程,小白一个,如果有不对的地方还希望大家可以指出,我一定认真学习。

 

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;//返回结果


    }
}

 

 

 

 

 

你可能感兴趣的:(VR,Learning)