Unity异步加载关卡
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异步加载关卡相关推荐
- Unreal Engine 4 —— 异步加载关卡的实现方法及思考
这篇文章介绍了在ue4中实现异步加载关卡的方法,以及我对应的思考. 背景 在很多游戏中都有用到关卡的异步加载,关卡的异步加载指的是在游戏的某个阶段,使用多线程的方法进行新关卡对应的内容加载.从而能够免 ...
- Unity异步加载场景
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Sce ...
- unity 异步加载网络图片_一个非常好用的AssetBundle资源加载器
Loxodon Framework Bundle是一个非常好用的AssetBundle加载器,也是一个AssetBundle冗余分析工具.它能够自动管理AssetBundle之间复杂的依赖关系,它通过 ...
- Unity 异步加载网络头像
public void LoadByWWW(string str, Image imgHead) {StartCoroutine(Load(str, imgHead)); }// ImageForma ...
- 异步加载场景与异步加载游戏资源
异步加载场景与异步加载游戏资源 Application.LoadLevel 加载关卡 在同步加载游戏场景的时候通常会使用方法Application.LoadLevel 加载关卡. 该方法在执行完App ...
- UE4 C++ 类的4种引用类型,和异步加载资产
UE4 C++ 类的4种引用类型,和异步加载资产 4种引用类型 对象引用:引用 World 的实例对象. 就是直接定义 UPROPERTY(EditAnywhere,BlueprintReadOnly ...
- UNITY所谓的异步加载几乎全部是协程,不是线程;MAP3加载时解压非常慢
UNITY所谓的异步加载几乎全部是协程,不是线程;MAP3加载时解压非常慢 实践证明,以下东西都是协程,并非线程(thread): 1,WWW 2,AssetBundle.LoadFromFileAs ...
- Unity可自定义loading页的异步加载工具,免费下载,使用说明
本文是针对ZTools中异步加载工具的使用说明,包含实现过程以及如何使用 免费下载地址:请到[ https://gitee.com/jacobkay/unity-ZTools-LoadSceneAs ...
- unity的异步加载
本文主要是代码上的理解,关于场景跳转时UI方面的Image进度条以及百分比表示进度比较简单,暂时不讨论 在unity中加载场景要先引入命名空间 using UnityEngine.SceneManag ...
最新文章
- Windows下RStudio环境安装
- 基于SSM实现租房平台管理系统
- Linux服务器负载均衡LB
- Unix shell 编程相关命令
- AndroidStudio中提示:android.content.res.Resources NotFoundException: String resource ID 0x
- Elasticsearch6.X 去重
- java学习(125):简单异常处理
- 工信部:1-2月我国出口手机1.6亿台 同比增加32.6%
- python入门——P49乱入:生成器
- web前端到底怎么学?干货资料!
- QT禁用“最大化按钮“和“禁止调节窗口大小“
- 生成订单30分钟未支付,则自动取消,该怎么实现?原来大公司的最有解是这样的!...
- (转)android拨打电话崩溃6.0以上实时动态权限申请
- ARM基础相关寄存器的讲解-LPC21XX
- 如何激活Office 2016(ProPlus/Visio2016/Project2016) VOL 简体中文版下载地址和安装方法哦
- 六年级计算机信息技术教案反思,小学六年级信息技术教学反思.doc
- MapReduce之求各个部门工资的总和
- android谷歌dns设置在哪,安卓手机怎么设置DNS Android手机修改DNS图文教程
- 最大化参数 火车头_火车头采集(LocoySpider)设置技巧
- 翻阅笔记所得杂记若干