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

 

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

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的游戏场景
    }
}


 

 

 

 

 

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


    }
}

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值