异步加载

我们想一想玩过的一些游戏,基本都会有加载界面——因为游戏场景数据较大,所以需要加载一小段时间。那为什么一些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 = ;
if (asyncOperation.progress < 0.9f)
{
progressVaule = (int)asyncOperation.progress * ;
}
else
{
progressVaule = ;
}
if (curProgressVaule < progressVaule)
{
curProgressVaule+=;
}
Pecentage_Text.text = curProgressVaule /+ "%"; Slider .value = curProgressVaule / 1000f;
if (curProgressVaule == )
{
asyncOperation.allowSceneActivation = true;
}
} }

Unity3D 异步加载 在 场景加载 中的使用的更多相关文章

  1. Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条

    Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条 异步任务相信大家应该不会陌生,那么本章内容MOMO将带领大家学习Unity中的一些异步任务.在同步加载游戏场景的时候通常会使用方法 Ap ...

  2. (转)Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条(三十一)

      异步任务相信大家应该不会陌生,那么本章内容MOMO将带领大家学习Unity中的一些异步任务.在同步加载游戏场景的时候通常会使用方法 Application.LoadLevel(“yourScene ...

  3. (转)Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条(三十一)

    http://www.xuanyusong.com/archives/1427  异步任务相信大家应该不会陌生,那么本章内容MOMO将带领大家学习Unity中的一些异步任务.在同步加载游戏场景的时候通 ...

  4. NGUI的异步场景加载进度条

    1.直接创建三个场景,其中第二个场景是用来显示进度条加载的界面,进度条用UISlider,不会的看我前面的博文就可以了. 2.这里提供两种方法,建议使用第一种,加载比较平缓 方法一: using Sy ...

  5. Unity3d 5.x AssetBundle打包与加载

    1.AssetBundle打包 unity 5.x版本AssetBundle打包,只需要设置好AssetBundle的名称后,unity会自动将其打包,无需处理其他,唯独需要做的是设置好个AssetB ...

  6. 喵的Unity游戏开发之路 - 多场景:场景加载

    如果丢失格式.图片或视频,请查看原文:https://mp.weixin.qq.com/s/RDVMg6l41uc2IHBsscc0cQ 很多童鞋没有系统的Unity3D游戏开发基础,也不知道从何开始 ...

  7. 【Unity】使用SceneManager加载/切换场景

    一.直接切换 老版的(已弃用!): Application.LoadLevel(int index); // 参数是场景编号 Application.LoadLevel(string name); / ...

  8. 利用青瓷布局自定义加载的场景,而不是自己改写qici-loading

    加载界面如果全部通过自己手动布局不仅不美观,还很难控制.借用原生的场景切换加载效果,来实现我们游戏的加载效果. 没有做加载修改的原来的加载顺序:   黑乎乎界面->(游戏定制的加载)你的第一个场 ...

  9. [UE4]场景加载界面

    就可以这样就可以了,当另外一个场景成功打开后,场景加载界面也会自动消失(因为这是加载界面是添加到当前场景). 加上delay是为了在小场景测试的时候可以方便看到加载场景,避免场景加载过快看不到,不加的 ...

随机推荐

  1. PAT (Basic Level) Practise (中文)- 1022. D进制的A+B (20)

    PAT (Basic Level) Practise (中文)-  1022. D进制的A+B (20)  http://www.patest.cn/contests/pat-b-practise/1 ...

  2. js正则函数match、exec、test、search、replace、split使用集合

    match 方法 使用正则表达式模式对字符串执行查找,并将包含查找的结果作为数组返回. stringObj.match(rgExp) 参数 stringObj 必选项.对其进行查找的 String 对 ...

  3. js获取主机名实现页面跳转

    <script language="javascript" type="text/javascript">        var hostname ...

  4. c# DateTime常用用法

    参考:http://sqlyuju.com/c-datetime-hh-hh-qubie.html https://www.cnblogs.com/xiongxiaobai/p/5282827.htm ...

  5. bzoj5138 [Usaco2017 Dec]Push a Box

    题目描述: bz luogu 题解: 暴力可以记录$AB$位置转移,这个时候状态是$n^4$的,无法接受. 考虑只记录$A$在$B$旁边时的状态,这个时候状态时$n^2$的. 所以说转移有两种,一种是 ...

  6. php-7.0.16 , apache2.4.25 配置

    官网下载php,apache 修改apache E:\php\Apache24\conf\httpd.conf Define SRVROOT "E:/php/Apache24" - ...

  7. python基础——13(系统、时间、序列化模块)

    一.时间模块 1.标准库time %y 两位数的年份表示(00-99) %Y 四位数的年份表示(0000-9999) %m 月份(01-12) %d 月中的一天(0-31) %H 24小时制小时数(0 ...

  8. 自学入门 Python 优质中文资源索引

    所有资源基于 Python3 版本,全部中文内容,适用于 爬虫 / Web / 数据 方向,每个单元根据学习习惯从 书籍 / 文档 / 视频 中选择一类即可,建议任选一本书籍,然后配合文档类进行学习. ...

  9. Java-转换Unicode和utf-8

    package com.tj; import java.io.UnsupportedEncodingException; public class MyClass implements Cloneab ...

  10. luogu3759 [TJOI2017]不勤劳的图书管理员

    分块+权值逆序对 #include <algorithm> #include <iostream> #include <cstdio> #include <c ...