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;
            }
        }
    
        
    }       
  • 相关阅读:
    webpack打包代码生成npm包和js文件学习记录
    王道每周工作记录
    20211116 nuxt项目移动端网页修复记录
    ubuntuwireshark打开出现错误的问题
    Python3基础使用RSA2(SHA256WithRSA)签名加密作为sign值的问题
    博客成长志
    OI学习日志 12月份
    docker 运行.net镜像服务运行正常但是连接不上sqlserver数据库解决方案
    国外一位Orchard的blog
    mvc 相关联的下拉列表 cascading dropdownlist
  • 原文地址:https://www.cnblogs.com/spiderljx/p/11025576.html
Copyright © 2011-2022 走看看