1. 假设当前场景为A,我们要切换到下一场景B,如果使用正常加载方式,Unity会在切换场景时加载场景B的所有内容(Hierarchy面板内容)到内存中,由于加载场景B是同步执行的,所以当场景B较大时,就会在加载过程出现卡顿现象
  2. 针对这种情况,我们通常会使用异步加载方式来加载场景。异步加载方式是在后台线程运行,不影响当前主线程,所以下一场景即使很大,当前场景也不会出现卡顿。
  3. 对于手游来讲,场景切换通常分为三个部分,“UI场景(选择关卡)”-》“Loading过渡场景(显示加载进度条)”-》“具体的关卡打斗场景”;不使用异步加载的话可能流程就是“UI场景(选择关卡)”-》“具体的关卡打斗场景”了。而使用异步加载的话,就会在两者中间加一个过渡场景掩饰异步加载等待的时间。
  4. 好了,具体代码如下
 // 上略private AsyncOperation mAsyncOperation;private int mCurProgress = 0;void Start () {StartCoroutine(LoadScene());}private IEnumerator LoadScene () {// u3d 5.3之后使用using UnityEngine.SceneManagement;加载场景mAsyncOperation = SceneManager.LoadSceneAsync("sceneName");// 不允许加载完毕自动切换场景,因为有时候加载太快了就看不到加载进度条UI效果了mAsyncOperation.allowSceneActivation = false;// mAsyncOperation.progress测试只有0和0.9(其实只有固定的0.89...)// 所以大概大于0.8就当是加载完成了while (!mAsyncOperation.isDone && mAsyncOperation.progress < 0.8f){yield return mAsyncOperation;}}void Update () {// 以下都是为实现加载进度条的int progressBar = 0;if (mAsyncOperation.progress < 0.8) progressBar = (int)(mAsyncOperation.progress * 100);else progressBar = 100;if (mCurProgress <= progressBar){mCurProgress++;// 进度条ui显示(本文不讨论) ((Win_Loading)UIWindowCtrl.GetInstance().GetCurrentWindow()).loadingView.SetLoadSceneInfo(mCurProgress * 0.01f);}else{// 必须等进度条跑到100%才允许切换到下一场景if (progressBar == 100) mAsyncOperation.allowSceneActivation = true;}}

补充(2020.05.16)
如果游戏只有一个Scene场景,就无法用异步加载场景方式,但是换个思路可以利用异步加载界面方式,其实场景和界面对于用户来讲是没什么区别的。
比如在场景里可以设计有《登录界面 关卡界面,加载界面,战斗界面》;或者另一种没有“关卡界面”的就是《登录界面 加载界面 战斗界面》;加载界面就是我们这里的重点,其功能是预加载资源,通常界面设计就是一张背景图和一个进度条表示资源加载进度了。
预加载资源一般是拼好的prefab、动态加载的图片、音效、动画、特效等资源,预加载就是提前把资源加载到内存,用时直接实例化即可;
预加载资源作用就是为了避免在游戏战斗进行中加载耗时导致卡顿,预加载后在游戏中实例化一般不耗时的,但也不能频繁实例化,对于常用的资源,太频繁的实例化和销毁容易导致内存泄漏;预加载资源进度统计可以直接在加载函数后面加个计数器即可。

【Unity3D 打斗游戏开发】之二 异步加载场景或预加载资源后进入游戏相关推荐

  1. 【Visual C++】游戏开发笔记二十三 游戏基础物理建模 五 粒子系统模拟 二

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 本系列文 ...

  2. 【Visual C++】游戏开发笔记二十三 游戏基础物理建模(五) 粒子系统模拟(二)

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. http://blog.csdn.net/zhmxy555/article/details/7607916 作者:毛星云    邮箱: h ...

  3. 【Visual C++】游戏开发笔记二十七 Direct3D 11入门级知识介绍

    游戏开发笔记二十七 Direct3D 11入门级知识介绍 作者:毛星云    邮箱: happylifemxy@163.com    期待着与志同道合的朋友们相互交流 上一节里我们介绍了在迈入Dire ...

  4. Pascal游戏开发入门(二):渲染图片

    Pascal游戏开发入门(二):渲染图片 渲染静态图片 新增一个Texture,然后Render出来 创建Texture,并获取尺寸 procedure TGame.Init(title: strin ...

  5. 【Visual C++】游戏开发笔记二十七 Direct3D 11入门级知识介绍

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. http://blog.csdn.net/zhmxy555/article/details/7707628 作者:毛星云 邮箱: happ ...

  6. java游戏开发入门(二) - 菜单

    java游戏开发入门(二) - 菜单 前言 编码 主菜单 游戏内菜单(按下ESC后出现,并会暂停游戏) 效果展示 主菜单 游戏内菜单 完整代码 完整项目 前言   上一章我们创建了一个600x600的 ...

  7. Cocos2d游戏开发之如何解包获得pvr.ccz中的美术资源

    Cocos2d游戏开发之如何解包获得pvr.ccz中的美术资源 在大部分时候,Cocos2d游戏会将美术资源打包以减轻性能要求,提高加载速度.而如果我们需要获得其中的美术资源,就得解包.这里以plis ...

  8. 5首页加载慢_UIViewController 预加载方案浅谈

    作者 | hite,目前在网易严选iOS 组,主要工作内容 webview 相关,业余时间会写一些胡思乱想产品策划稿,各类游戏云玩家. 一. 引子 预加载作为常规性能优化手段,在所有性能敏感的场景都有 ...

  9. android调用h5预加载图片,图片预加载 preload

    图片预加载 HTML5学堂:2014年年初的时候,曾经在自己的博客"独行冰海"里写过关于图片预加载和懒加载的博文,当时的文章当中没有写什么关于预载的代码范例,当前打算把预载和懒载分 ...

最新文章

  1. 控制-动力学-拉格朗日建模
  2. pybind11 入门
  3. 活动选择的贪心算法与动态规划
  4. Python元组练习
  5. 【计算机网络复习 数据链路层】3.5.4 CSMA-CD协议
  6. 飞鸽传书最新源码类都要复杂的多
  7. react中form可以嵌套一个form吗_Ant-Design从v3升级到v4的Form适配
  8. vim插件ctags的安装和使用
  9. 04.如何升级扩展以支持Visual Studio 2019
  10. Windows系统清理随记
  11. 如何通过电影种子名选择合适的电影
  12. linux设备驱动(一)
  13. python正则表达式快速入门_Python 正则表达式入门
  14. 深度学习(自然语言处理)RNN、LSTM、TextCNN
  15. 连续被特斯拉碾压的国产车终于成功反击,五菱宏光月销超2万
  16. 《十年》中的没有颤抖的那两个字——“始于你好,终于你好”
  17. 蓝鸽服务器崩溃怎样从装系统,系统崩溃如何重装系统?
  18. 三国志9如何进行城市防御
  19. 【Java】 第六章 接口、lambda 表达式与内部类 Java核心技术卷1基础知识原书第10版 读书笔记
  20. 回收站清空的文件怎么恢复?学会这2招,简单又实用

热门文章

  1. 信息安全方针和信息安全策略
  2. Ubuntu中安装部署Intel CS WebRTC
  3. spring.profiles.include 跟 spring.profiles.active 的区别
  4. arduino 伸缩轨道_M5Train 视觉识别轨道小火车头
  5. python学习-温度转换
  6. 大学生结构设计竞赛计算书毕业设计结构计算分析软件Midas_Gen教学视频
  7. android 悬浮按钮 功能实现,怎么在Android中利用FloatingActionButton实现一个悬浮按钮效果...
  8. CAEE2023电路保护、热保护、熔断器、保险丝展览会
  9. 澳大利亚插头插座连接器RCM认证检测标准详解:AS/NZS 3100/3112/3122/3120/3105/3199
  10. 面试 技术 教训_我在30天内进行60多次技术面试的经验教训