zoukankan      html  css  js  c++  java
  • Unity3D 异步加载 在 场景加载 中的使用

    异步加载

    我们想一想玩过的一些游戏,基本都会有加载界面——因为游戏场景数据较大,所以需要加载一小段时间。那为什么一些2D游戏也会有加载界面呢?按理说2D游戏场景会很小,这样做是为了让游戏跑在低端设备上时,有更好的体验。

    当我们在开发一些3D游戏的时候,一般情况下在跳转场景时都要提前加载场景资源。以下我通过举例来说说异步加载。

    1.首先在建立两个场景。在第一个场景中创建一个进度条(Slider),在第二个场景中创建一个三维物体。

    2.然后创建一个脚本,挂载在新创建的进度条(Slider)上。

    3.然后接下来看代码。

    // 其他的头文件省略
    using UnityEngine.UI;    //  引入头文件
    
    public class Loading_scene : MonoBehaviour
    {
            private   Slider Slider;     // 进度条
            private AsyncOperation  asyncOperation;
            public   Text Pecentage_Text;    // 显示进度的文本
    
        
             void Awake()
            {
                 // 将自身对象的slider组件给Slider  属性
                  slider = gameObject.GetComponent<Slider>();
             } 
        private void Start()
        {
            StartCoroutine("LoadScene", Scene_name);   // 开启协程
        }
    
        IEnumerator LoadScene(string Scene_name)     // 通过协程加载场景
        {
            asyncOperation = SceneManager.LoadSceneAsync(Scene_name);//异步跳转到Scene_name场景 
            asyncOperation.allowSceneActivation = false;//当game场景加载到90%时,不让它直接跳转到game场景。 
            yield return asyncOperation;
        }
    
    
    void Update()
        {
           if (asyncOperation == null)
            {
                return;
            }
            int progressVaule = 0;
            if (asyncOperation.progress < 0.9f)
            {
                progressVaule = (int)asyncOperation.progress * 100;
            }
            else
            {
                progressVaule = 1000;
            }
            if (curProgressVaule < progressVaule)
            {
                curProgressVaule+=2;
            }
            Pecentage_Text.text = curProgressVaule /10+ "%";
    
            Slider .value = curProgressVaule / 1000f;
            if (curProgressVaule == 1000)
            {
                asyncOperation.allowSceneActivation = true;
            }
        }
    
        
    }       
  • 相关阅读:
    SQL INNER JOIN
    SQL JOIN
    SQL OUTER JOIN
    SQL CROSS JOIN
    SQL 基础:Select语句,各种join,union用法
    Morton Code
    vs 字体
    sql 语言
    sqllite3
    linux怎么区别文本文件和二进制文件
  • 原文地址:https://www.cnblogs.com/spiderljx/p/11025576.html
Copyright © 2011-2022 走看看