Async异步加载

  • 一、异步加载是什么?
  • 二、使用异步加载
    • 1.SceneManager.LoadSceneAsync();
    • 2.UI显示加载进度
    • 3.设置为加载完成后,按下任一按键进入场景

一、异步加载是什么?

当加载的场景资源很大时,会需要一定时间,这样可能会让玩家以为游戏卡住了。使用异步加载场景,
会保留当前场景的情况下,后台加载场景从而在场景加载完成后再进入下一个场景。

二、使用异步加载

1.SceneManager.LoadSceneAsync();

代码如下(示例):新建一个脚本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;public class GameManager : MonoBehaviour
{//外部调用这个方法开始加载public void LoadGameLevel(){StartCoroutine("LoadGame");}IEnumerator LoadGame(){//异步加载AsyncOperation operation=SceneManager.LoadSceneAsync(SceneManager.GetActiveScene().buildIndex + 1);yield return null;}}

虽然能用,但是不直观没有加载进度显示。

2.UI显示加载进度

1、添加滑动条来充当加载进度条。

代码如下(示例):

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;public class GameManager : MonoBehaviour
{public Text text;public Slider slider;public void LoadGameLevel(){StartCoroutine("LoadGame");}IEnumerator LoadGame(){//异步加载    AsyncOperation operation=SceneManager.LoadSceneAsync(SceneManager.GetActiveScene().buildIndex + 1);//当异步加载还未完成时while(!operation.isDone){text.text = operation.progress * 100 + "%";//显示进度slider.value = operation.progress;//显示进度条yield return null;}}
}

AsyncOperation的变量:

3.设置为加载完成后,按下任一按键进入场景


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;public class GameManager : MonoBehaviour
{public Text text;public Slider slider;public void LoadGameLevel(){StartCoroutine("LoadGame");}IEnumerator LoadGame(){//异步加载AsyncOperation operation=SceneManager.LoadSceneAsync(SceneManager.GetActiveScene().buildIndex + 1);//禁止在场景准备就绪后立即激活场景operation.allowSceneActivation = false;//当异步加载还未完成时while(!operation.isDone){text.text = operation.progress * 100 + "%";slider.value = operation.progress;if(slider.value>=0.9f){slider.value = 1;text.text = "按下任一键进入";//检测任一键被按下if(Input.anyKeyDown){         //允许在场景准备就绪后立即激活场景operation.allowSceneActivation = true;}}yield return null;} }
}

关于operation.progress:返回操作的进度。(只读) 这将返回操作的剩余进度。当进度浮点值到达 1.0 并调用 isDone 时,操作结束。如果将 allowSceneActivation 设置为 false,则进度将在 0.9 处停止,直到被设置为 true。 当allowSceneActivation设置为ture时,就会跳转到加载好的场景。

Unity异步加载关卡相关推荐

  1. Unreal Engine 4 —— 异步加载关卡的实现方法及思考

    这篇文章介绍了在ue4中实现异步加载关卡的方法,以及我对应的思考. 背景 在很多游戏中都有用到关卡的异步加载,关卡的异步加载指的是在游戏的某个阶段,使用多线程的方法进行新关卡对应的内容加载.从而能够免 ...

  2. Unity异步加载场景

    using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Sce ...

  3. unity 异步加载网络图片_一个非常好用的AssetBundle资源加载器

    Loxodon Framework Bundle是一个非常好用的AssetBundle加载器,也是一个AssetBundle冗余分析工具.它能够自动管理AssetBundle之间复杂的依赖关系,它通过 ...

  4. Unity 异步加载网络头像

    public void LoadByWWW(string str, Image imgHead) {StartCoroutine(Load(str, imgHead)); }// ImageForma ...

  5. 异步加载场景与异步加载游戏资源

    异步加载场景与异步加载游戏资源 Application.LoadLevel 加载关卡 在同步加载游戏场景的时候通常会使用方法Application.LoadLevel 加载关卡. 该方法在执行完App ...

  6. UE4 C++ 类的4种引用类型,和异步加载资产

    UE4 C++ 类的4种引用类型,和异步加载资产 4种引用类型 对象引用:引用 World 的实例对象. 就是直接定义 UPROPERTY(EditAnywhere,BlueprintReadOnly ...

  7. UNITY所谓的异步加载几乎全部是协程,不是线程;MAP3加载时解压非常慢

    UNITY所谓的异步加载几乎全部是协程,不是线程;MAP3加载时解压非常慢 实践证明,以下东西都是协程,并非线程(thread): 1,WWW 2,AssetBundle.LoadFromFileAs ...

  8. Unity可自定义loading页的异步加载工具,免费下载,使用说明

    本文是针对ZTools中异步加载工具的使用说明,包含实现过程以及如何使用  免费下载地址:请到[ https://gitee.com/jacobkay/unity-ZTools-LoadSceneAs ...

  9. unity的异步加载

    本文主要是代码上的理解,关于场景跳转时UI方面的Image进度条以及百分比表示进度比较简单,暂时不讨论 在unity中加载场景要先引入命名空间 using UnityEngine.SceneManag ...

最新文章

  1. Windows下RStudio环境安装
  2. 基于SSM实现租房平台管理系统
  3. Linux服务器负载均衡LB
  4. Unix shell 编程相关命令
  5. AndroidStudio中提示:android.content.res.Resources NotFoundException: String resource ID 0x
  6. Elasticsearch6.X 去重
  7. java学习(125):简单异常处理
  8. 工信部:1-2月我国出口手机1.6亿台 同比增加32.6%
  9. python入门——P49乱入:生成器
  10. web前端到底怎么学?干货资料!
  11. QT禁用“最大化按钮“和“禁止调节窗口大小“
  12. 生成订单30分钟未支付,则自动取消,该怎么实现?原来大公司的最有解是这样的!...
  13. (转)android拨打电话崩溃6.0以上实时动态权限申请
  14. ARM基础相关寄存器的讲解-LPC21XX
  15. 如何激活Office 2016(ProPlus/Visio2016/Project2016) VOL 简体中文版下载地址和安装方法哦
  16. 六年级计算机信息技术教案反思,小学六年级信息技术教学反思.doc
  17. MapReduce之求各个部门工资的总和
  18. android谷歌dns设置在哪,安卓手机怎么设置DNS Android手机修改DNS图文教程
  19. 最大化参数 火车头_火车头采集(LocoySpider)设置技巧
  20. 翻阅笔记所得杂记若干

热门文章

  1. Unity性能优化技巧
  2. 中医教你如何调理女性内分泌失调
  3. 陳三甲网络笔记:一个好的项目就如好女人,值得你珍惜
  4. Itron加速澳大利亚和新西兰水务公司的数字化转型
  5. Paint - 简介
  6. 健身耳机哪个牌子好,分享几款健身好用的耳机品牌
  7. C# int int16 Int32 Int64的介绍
  8. 活动倒计时插件 zblog_燃油车何时开启倒计时?听听这6大汽车巨头怎么说
  9. plor 回归的r方_【回归分析】R、R平方与调整后的R平方
  10. 软raid5创建删除与配置