Unity3D_异步加载场景(进度条)
- 创建两个场景:现在的场景“NowScene”,要加载的场景“LoadScene”;
- “NowScene”如图所示,“LoadScene”任意;
- 创建脚本“AsyncLoadScene”,复制如下代码,挂在到Canvas上;
- 推拽"Slider"和"Text"到面板上;
- 注意将要加载的场景添加到《Scenes In Build》,否则加载时回报空引用。

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.SceneManagement; public class AsyncLoadScene : MonoBehaviour
{
// 进度条
public Slider loadingSlider;
// 文字显示加载进度
public Text loadingText;
// 进度条的行进速度
private float SliderLoadSpeed = ;
// 场景加载类的对象
private AsyncOperation operation;
// 加载进度(由于加载进度不能为 1,所以需要此变量在加载进度大于某一个值时让加载进度变为1)
private float targetValue; void Start ()
{
// 初始化进度条
loadingSlider.value = 0.0f; if (SceneManager.GetActiveScene ().name == "NowSence") {
// 启动协程
StartCoroutine (AsyncLoading ());
}
} void Update ()
{
// operation.progress 加载进度
targetValue = operation.progress; if (operation.progress >= 0.9f) {
// operation.progress的值最大为0.9
targetValue = 1.0f;
} if (targetValue != loadingSlider.value) {
// 插值运算(进度条向当前加载进度趋近)
loadingSlider.value = Mathf.Lerp (loadingSlider.value, targetValue, Time.deltaTime * SliderLoadSpeed);
// 避免插值运算一直进行
if (Mathf.Abs (loadingSlider.value - targetValue) < 0.01f) {
loadingSlider.value = targetValue;
}
}
// 显示加载百分比
loadingText.text = ((int)(loadingSlider.value * )).ToString () + "%"; // 当进度条完成 100% 时,加载场景
if ((int)(loadingSlider.value * ) == ) {
//允许异步加载完毕后自动切换场景
operation.allowSceneActivation = true;
}
} // 加载场景的协程
IEnumerator AsyncLoading ()
{
// 异步加载场景
operation = SceneManager.LoadSceneAsync ("LoadSence");
// 阻止当加载完成自动切换
operation.allowSceneActivation = false; yield return operation;
} }
Unity3D_异步加载场景(进度条)的更多相关文章
- android 网络异步加载数据进度条
ProgressDialog progressDialog = null; public static final int MESSAGETYPE = 0; private void execute( ...
- WPF BackGroundWord 异步加载更新进度条示例
<Window x:Class="AsynchronousLoading.MainWindow" xmlns="http://schemas.microsoft.c ...
- Unity异步加载场景loading条
using UnityEngine; using System.Collections; public class LoadingScene : MonoBehaviour { public UISl ...
- Unity 异步加载场景
效果图如下: 今天一直在纠结如何加载场景,中间有加载画面和加载完毕的效果动画! A 场景到 B , 看见网上的做法都是 A –> C –> B. C场景主要用于异步加载B 和 播放一些 ...
- js - 预加载+监听图片资源加载制作进度条
这两天遇到一个新需求:一个一镜到底的h5动画.因为功能的特殊性,就要求我们提前监听页面的静态图片是否全部加载完毕.即处理预加载. 总结下来,下次这种需求需要提前注意以下几点: 一.图片而不是背景图 本 ...
- 【Unity笔记】使用协程(Coroutine)异步加载场景
using UnityEngine; using System.Collections; using UnityEngine.SceneManagement; using System; public ...
- cocos2dx 3.x(加载cocostudio进度条)
// // MyLoagingScene.hpp // My // // Created by work on 16/10/13. // // #ifndef MyLoagingScene_hpp # ...
- js 多张图片加载 环形进度条
css 部分使用 svg 绘制环形 svg{width:100px; height: 100px; margin:15% auto 25%; box-sizing:border-box; displa ...
- Unity异步加载场景
在游戏中,经常可以看到从一个关卡跳到另一个关卡时,有一个显眼的进度条,研究了下,其时也很简单: public void LoadAScene() { StartCoroutine(LoadSce ...
随机推荐
- tomcat 启动显示指定的服务未安装
解决方法: 命令行进入tomcat的bin目录 输入“service.bat install” 重启,OK
- JSON对象转成formData对象,formData对象转成JSON对象
在向后端请求时,如果上传的数据里存在file文件对象,需要用到表单提交,这时候我们需要将JSON对象,转成formData对象,具体见代码 const formData = new FormData( ...
- Java 发送 Http请求工具类
HttpClient.java package util; import java.io.BufferedReader; import java.io.IOException; import java ...
- 交叉验证(Cross Validation)方法思想简介
以下简称交叉验证(Cross Validation)为CV.CV是用来验证分类器的性能一种统计分析方法,基本思想是把在某种意义下将原始数据(dataset)进行分组,一部分做为训练集(train ...
- GPT分区表的备份与恢复
GPT分区表的备份与恢复 keenshoes 2016-01-13 21:02:25 关键词: GPT, Partition, MBR,APPLE, GUID, Protective MBR 对于现 ...
- jquery简易的三级导航
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...
- 牛客小白月赛5 A 无关(relationship) 【容斥原理】【数据范围处理】
题目链接:https://www.nowcoder.com/acm/contest/135/A 题目描述 若一个集合A内所有的元素都不是正整数N的因数,则称N与集合A无关. 给出一个含有k个元素的 ...
- scrapy 圣墟
# -*- coding: utf-8 -*- import scrapy from sx.items import SxItem class SkSpider(scrapy.Spider): nam ...
- Java读取各种文件格式内容
所需的jar包哦也不要太记得了,大家可以搜搜,直接上代码: import java.io.BufferedInputStream; import java.io.File; import java.i ...
- SpringMVC解决前台传入的数组或集合类型数据
1前台处理如下: $.ajax({ url:"saveMapInfo", type:"POST", dataType:"json", con ...