unity学习-------异步场景加载(asyncoperation)(代码片段)

HaryCoding HaryCoding     2023-03-30     512

关键词:

首先,学习异步场景加载之前,先了解什么是异步场景加载。

一、什么是异步场景加载

       在目前市面上基本所有的游戏都使用了这个方法,举个例子

      

     

       (绝地求生加载画面)

       

          (英雄联盟加载画面)

        从这两个例子不难看出异步加载无非就是让玩家等待游戏进度条加载。

二、异步场景加载的学习

        这边就简单介绍如何使用这个方法。

   1、首先准备两个场景,一个作为主界面,一个作为游戏跳转界面

        

   2、设计两个UI板块,一个作为交互界面,一个作为异步场景加载界面

 

          我这边简单操作一下

(按下按钮Loadpanel 界面隐藏,显示Background界面,当数值加载至100%,跳转到游戏场景)

      3、上脚本

          做完前面几步,写一个关于的AsyncOperation脚本

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

public class Begin : MonoBehaviour

    public GameObject Background;
    //异步场景加载界面
    public Text text;
    //获取加载界面的文本
    public Slider slider;
    //设置共有对象来改变slider的value值

    public void loadNext()
    
        StartCoroutine(loadlevel());
        //使用loadlevel方法
    

    IEnumerator loadlevel()
    //设置协程类型方法loadlevel
    
        Background.SetActive(true);

        AsyncOperation operation = SceneManager.LoadSceneAsync(SceneManager.GetActiveScene().buildIndex + 1);
        //加载本场景数值 +1的场景SampleScene
        operation.allowSceneActivation = false;
        //先不加载下一场景
        while (!operation.isDone)
        
            slider.value = operation.progress;
            //operation.progress本质上就是数值
            text.text = operation.progress * 100 + "%";

            if (operation.progress >= 0.9f)
            //由于该方法本身的问题所以需要手动把数值改为100%
            
                slider.value = 1;
                text.text = "Press any key";
                if (Input.anyKeyDown)
                
                    operation.allowSceneActivation = true;
                    //按下任意按钮开始加载下一场景
                
            
            yield return null;
        
    

简单展示一下

 说明:这个游戏比较小,所以异步加载界面数值变化不明显。

 

 

 

 

 

 

 

 

unity异步加载场景(代码片段)

...;这个过程会非常的耗时,会让玩家感受到卡顿。所以异步切换就是来解决该问题的。场景异步加载异步加载的两种方式1.异步加载第一种方式:通过事件回调函数异步加载异步加载场景的API:SceneManager.LoadSceneAsync(“... 查看详情

unity中场景异步加载(代码片段)

引入命名空间usingUnityEngine.UI;usingUnityEngine.SceneManagement; usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingUnityEngine.UI;//引入命名空间usingUnityEngine.SceneManagement;/ 查看详情

unity异步加载关卡(代码片段)

Async异步加载一、异步加载是什么?二、使用异步加载1.SceneManager.LoadSceneAsync();2.UI显示加载进度3.设置为加载完成后,按下任一按键进入场景一、异步加载是什么?当加载的场景资源很大时,会需要一定时间,... 查看详情

unity笔记使用协程(coroutine)异步加载场景

usingUnityEngine;usingSystem.Collections;usingUnityEngine.SceneManagement;usingSystem;publicclassLoadingPage:MonoBehaviour{publicUISliderprogressBar;//目标进度floattarget=0;//读取场景的进度,取值范围0~1floatprogress= 查看详情

unity加载视频流很慢

...网上一大把文章来教你如何优化。2.第二种方式就是做个异步加载,当场景加载很慢,黑屏很久的时候,做个异步加载,而且不能立马异步加载场景,给一秒钟延时,先让它加载空白场景,然后在加载主场景 查看详情

unity3d怎么实现异步加载场景

...UI;usingUnityEngine.SceneManagement;///<summary>///挂载到camera上异步加载///</summary>publicclassARLoadingScr:MonoBehaviour///<summary>///滑动条提交回答///</summary>publicSliderprocessBar;privateAsyncOperationasync;privateintnowProcess;voidStart()StartCoroutine... 查看详情

unity3d协同函数与异步加载功能实战学习

查看详情

unity实现场景加载功能(代码片段)

unity场景加载分为同步加载和异步加载;同步加载loadScene创建一个项目工程,然后创建三个场景loading00、loading01、loading02。每个场景分别创建一个cube、Sphere、Capsule。然后打开File->BuildSettings,然后将创建的loading00、loading0... 查看详情

unity_加载页面及进度条(代码片段)

...他主页点击按钮后先跳转到这个加载页面场景,同时异步加载要跳转到的场景参考:UnitySceneManager场景管理Chinar详解APIUnity场景异步加载(加载界面的实现)新建一个加载页面场景创建一个滑动条用来表示进度条 ... 查看详情

unity---场景/场景管理类与异步场景加载法

1.一个游戏是由很多的场景组成的,比如游戏的开始页面,战斗场景,商店页面...等等,这些都是一个个游戏场景或者比如说:一进入游戏,你一开始来到的是新手村这个场景,出了新手村后来到的就... 查看详情

如何在unity3d使用www加载场景并显示进度条

参考技术A异步加载场景,可以使用变量progress查看加载进度5.x:UnityEngine.SceneManagement.SceneManager.LoadSceneAsync("sceneName").progress;4.xApplication.LoadLevelAsync(1).progress;WWW通常使用在访问url时,www.progress可以查看加载进度 查看详情

unity场景管理/切换

...避免在加载时出现暂停或者性能问题,应该使用该函数的异步版本:LoadSceneAsync()。  使用LoadS 查看详情

小功能⭐️u3d异步加载功能(代码片段)

...载过程出现卡顿现象针对这种情况,我们通常会使用异步加载方式来加 查看详情

小功能⭐️u3d异步加载功能(代码片段)

...载过程出现卡顿现象针对这种情况,我们通常会使用异步加载方式来加 查看详情

unity3d中制作loading场景进度条所遇到的问题loadlevelasync,asyncoperation

...进度。在Unity中可以通过调用Application.LoadLevelAsync函数来异步加载游戏场景,通 查看详情

unity3dc#实现aa包(addressables)资源热更新的多个包异步加载并显示加载实时进度功能(含源码)(代码片段)

...;Unity3d使用统一可寻址资产系统(Addressables)入门学习保姆级教程(含工程)Unity3d使用统一可寻址资产系统(Addressables)实现服务器资源热更新和资源版本管理等功能(含源码)我这边使用的版本... 查看详情

在unity3d里怎么做进度条

...示。objProcessBar.GetComponent<UISlider>().value=acOp.progress;异步加载场景testScene2的速度直接决定了进度条的实际进展速度。五、加载场景loadScene一闪而过,迅速的就跳转到了场景testScene2。完全无法看到进度条进展的过程。上述代码... 查看详情

场景在 Unity 中加载但无法加载场景 Android

】场景在Unity中加载但无法加载场景Android【英文标题】:SceneloadsinUnitybutunabletoLoadSceneAndroid【发布时间】:2019-10-1400:08:09【问题描述】:我的游戏在Unity中运行良好,但是当我导出apktpAndroidMobile2ndScene时无法正确加载并且无法运行... 查看详情