博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
异步加载场景
阅读量:5999 次
发布时间:2019-06-20

本文共 1446 字,大约阅读时间需要 4 分钟。

Unity版本 5.2.2

当我们执行场景跳转的时候,经常会出现游戏顿的情况,为了过度掉这段卡顿的情况,我们可以在创建一个新的场景,专门用来加载将要跳转的下一个场景。

通常情况下这个新创建的场景是用来加载下一个即将跳转的场景的,一般使用异步加载。

异步加载需要用到协同加载:

什么是协程:协同进程,在主程序运行开始时同事运行开启另一段逻辑处理,来协同当前程序的执行。但协程不是开启了另一个线程。在Unity中是不允许出现两个线程的。

协程的开启需要到MonoBehavior.StartCoroutine方法开启一个协程;所以协程必须在MonoBehavior或继承自MonoBehavior的类中进行调用;

StartCoroutine(String methodName)和StartCoroutine(IEnumerator Routine)都可以开启一个协程

传参的函数一定要写 yield rerurn;

区别在于:使用字符串作为参数时,开启线程时最多只能传递一个参数,并且性能小号会更大一点,而使用IEnumertor routine 作为参数时则没有这个限制。

在Unity中使用StopCoroutine(String methodName)来终止一个协程,使用StopAllCoroutine来终止所有的协程;

还有一种方法是将协程所在的gameobject对象的active属性设置为false 当再次设置active属性为true的时候,协程不会再开启;但是将协同程序所在脚本的enabled设置为false则不会生效;

异步加载:

第一种异步加载的方法:

  Application.LoadLevelAsync("yourScene"); 这种加载加载完这个界面后会删除上一个界面的缓存;

第二种异步加载的方法:

  Application.LoadLevelAsync("yourScene");这种加载 加载完成后不会删除上一个界面的缓存,会对内存造成一些负担;

这两个加载的方法的返回值是AsyncOperation对象。通过该对象能够获取到游戏加载的进度;

 

 

using UnityEngine;

using System.Collections;

public class LoadingNextScene : MonoBehaviour {
private AsyncOperation asy;
public UIProgressBar progressB;
void Start () {
if(progressB)
progressB.value = 0;
StartCoroutine(loadScene());
}
void Update () {
// asy.progress在等于0.9的时候会跳转,因此在0.9的时候进度条要走满;
if(asy.progress< 0.9f)
progressB.value = asy.progress;
else
progressB.value = 1;
}

IEnumerator loadScene()

{

asy = Application.LoadLevelAsync("Start");
yield return asy;//;¾Đ4”yield return”下M â
}
}

 

转载于:https://www.cnblogs.com/FingerCaster/p/6701269.html

你可能感兴趣的文章
线段树模板【数据结构 - 线段树】
查看>>
Castle IOC概念理解
查看>>
如何配置Log4Net使用Oracle数据库记录日志
查看>>
一道在知乎很火的 Java 题——如何输出 ab【转】
查看>>
Python学习第二天-编写购物车
查看>>
AD域组策略-只显示指定的控制面板选项配置方法
查看>>
BigTable——针对结构型数据的一种分布式存储系统
查看>>
ip通信基础第二周回顾
查看>>
唯美MACD-完全版
查看>>
Canvas中 drawImage绘制图片不显示
查看>>
MyEclipse新建Server项目
查看>>
Magento错误处理
查看>>
茵茵的第一课
查看>>
Linux实战教学笔记53:开源虚拟化KVM(一)搭建部署与概述
查看>>
PAT 1007
查看>>
USACO习题:Friday the Thirteenth
查看>>
C++ VS2012 内存泄露检测
查看>>
zabbix 批量添加聚合图形
查看>>
北京交通大学第六届新生程序设计竞赛题解
查看>>
求解点关于直线的距离、垂足、对称点公式
查看>>