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

本文介绍了Unity3D中如何使用异步加载方式避免场景切换时的卡顿问题,特别是在手游场景加载流程中的应用。通过在UI场景和打斗场景之间插入Loading过渡场景,掩饰加载等待时间。此外,还讨论了在单场景游戏中如何利用异步加载预加载资源,如prefab、图片、音效等,以减少游戏运行时的卡顿,并提醒注意资源管理和内存泄漏问题。
摘要由CSDN通过智能技术生成
  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.pr
  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值