Unity基础 异步加载场景

这篇具有很好参考价值的文章主要介绍了Unity基础 异步加载场景。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

异步加载场景的基本概念

在Unity中,异步加载场景是指在游戏运行时,将场景中的资源分批次加载到内存中,以便提高游戏的加载速度和性能。通常情况下,加载场景的过程会在主线程中执行,而异步加载场景可以在后台线程中执行,从而不会阻塞主线程。

要使用异步加载首先我们要了解协程,不太清楚的同学可以点击这

了解了协程后我们我需要知道AsyncOperation这个类,它用于管理需要在后台执行的任务,首先我们介绍一下它的重要属性

isDone

isDone属性表示异步操作是否已完成。当场景加载完成时,AsyncOperation对象的isDone属性将返回true。 

AsyncOperation asyncOperation = SceneManager.LoadSceneAsync("MyScene");
while (!asyncOperation.isDone)
{
   yield return null;
}
//当isDone加载完成时场景跳转

progress

progress属性表示异步操作的度。该进属性返回一个在0和1之间的浮点数,表示操作已经完成的比例。

AsyncOperation asyncOperation = SceneManager.LoadSceneAsync("MyScene");
while (!asyncOperation.isDone)
{
  //显示当前进度
   Debug.Log("当前进度: " + asyncOperation.progress * 100 + "%");
  yield return null;
} 

allowSceneActivation

allowSceneActivation属性表示当场景加载完成后,是否立即激活该场景。

AsyncOperation asyncOperation = SceneManager.LoadSceneAsync("MyScene");
//当=true的时候,场景加载完毕后会直接接跳转,当=false时,加载完毕后不会跳转,需要设置为true才会跳转
asyncOperation.allowSceneActivation = true;
while (!asyncOperation.isDone)
{
    yield return null;
}
Debug.Log("场景加载完毕后跳转!"); 

completed

completed属性是一个异步操作完成时的回调函数。当异步操作完成时,该回调函数将被调用。我们可以使用该属性来指定异步操作完成后要执行的代码。 

AsyncOperation asyncOperation = SceneManager.LoadSceneAsync("MyScene");
asyncOperation.completed += operation =>
{
    Debug.Log("场景加载完成后执行的操作");
}; 

异步加载场景的示例代码

下面是一个简单的示例代码,演示了如何在Unity中异步加载场景: 文章来源地址https://www.toymoban.com/news/detail-517580.html

using System.Collections;
using UnityEngine;
using UnityEngine.SceneManagement;

public class LoadSceneAsync : MonoBehaviour
{
    public string sceneName;
    //异步加载对象
    private AsyncOperation asyncLoad;

    void Start()
    {
        StartCoroutine(LoadScene());
    }

    IEnumerator LoadScene()
    {
        //获取加载对象
        asyncLoad = SceneManager.LoadSceneAsync(sceneName);
        //设置加载完成后不跳转
        asyncLoad.allowSceneActivation = false;

        while (!asyncLoad.isDone)
        {
            //输出加载进度
            Debug.Log(asyncLoad.progress);
            //进度.百分之九十后进行操作,当进度为百分之90其实已经完成了大部分的工作,就可以进行下面的逻辑处理了
            if (asyncLoad.progress >= 0.9f)
            {
                asyncLoad.allowSceneActivation = true;
            }

            yield return null;
        }
    }
} 

到了这里,关于Unity基础 异步加载场景的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity中资源异步加载

            Unity作为一款优秀的游戏引擎,广泛应用于游戏制作领域。在游戏的开发过程中,资源加载的效率和流畅度尤为重要。对于较大的资源文件,同步加载方式可能会导致游戏卡顿、延迟等问题。因此,采用异步加载的方法可以提高游戏的效率和用户体验。 本篇博客将

    2024年02月06日
    浏览(58)
  • unity如何实现进度条效果(异步加载)

    unity如何实现进度条加载效果,按任意键结束 https://wwez.lanzoul.com/iOakN0tsvgje

    2024年02月03日
    浏览(48)
  • Unity 场景加载和资源加载

    一个游戏往往都是由很多场景组成的,例如会有主界面场景、战斗场景…等,不同的场景也是由若干的资源组合而成,在游戏的制作过程中,场景和资源的加载是不可或缺的。不管是场景还是资源都会涉及到加载的问题,在什么时候进行场景或资源的加载?场景的加载和资源

    2024年02月04日
    浏览(39)
  • Unity 3D开发--SceneManager场景管理(异步使用同一个过渡场景)

    在U3D开发过程中经常使用到多场景的切换,有同步SceneManager.LoadScene()和异步SceneManager.LoadSceneAsync()两种方法,同步的话一般就会卡住界面直到加载完成,使用异步的话一般都做一个加载的进度条,每次切换的时候都需要一个加载动画,所以需要建一个专门的过渡加载场景来进

    2024年02月14日
    浏览(44)
  • 【Unity】AssetBundle资源异步加载以及AB包卸载

    以下代码是基于上一篇文章《AssetBundle资源同步加载》的代码新增了异步加载和AB包卸载功能,有兴趣的同学可以去看看我的上一篇文章。 由于异步加载需要配合协程进行功能开发,所以我对之前封装的AB包资源加载管理器进行修改,改为继承MonoBehaviour的单例模式。 主要修改

    2023年04月08日
    浏览(38)
  • Unity 多场景/大场景加载解决方法

    记录一下最近学习的新的知识,关于解决多场景加载的问题,方便下次及时的巩固复习。 此次使用的是 Unity的异步加载 来实现功能。 将一个大场景的地图分成好几个场景,利用玩家的距离来判断加载哪个场景和卸载哪个场景。 利用玩家的自身距离和预加载场景的距离判断

    2024年02月04日
    浏览(49)
  • Unity场景进度条加载

    首先,创建Canvas,在Canvas中创建一个Button和一个Panel Button:点击之后进入场景加载 Panel:场景加载面板  其次,在panel当中,我们在创建slider和Text Text:用来描述进度条的百分比,所以text可有可无,看自己意愿   slider :就是我们的进度条了 Panel建好后,将SetActive设置为false,

    2023年04月09日
    浏览(49)
  • 【Unity细节】为什么加载精灵图集直接导致Unity引擎崩溃

    👨‍💻个人主页 :@元宇宙-秩沅 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 秩沅 原创 😶‍🌫️收录于专栏 :unity细节和bug 😶‍🌫️优质专栏 ⭐【软件设计师高频考点暴击】 点击运行,Unity直接崩溃退出 在加载打包后的图集时,可能图集里面没有相应的资源,

    2024年02月05日
    浏览(61)
  • unity加载场景后光照变暗

    关于unity加载场景后光照变暗的问题 最近在做场景的加载功能时,发现加载新的场景后整个场景的光照都变暗,但是如果是直接运行当前场景的话就不会,后来才发现原来是选择的光照是realtime实时光照,在一开始的场景时,它的灯光是已经渲染好了,但重新加载的时候灯光

    2024年02月15日
    浏览(52)
  • 十八、Unity游戏引擎入门

    1、下载     首先需要下载Unity Hub,下载网址:https://unity.com/cn。     然后在其中下载Unity编辑器并安装,可选择最新版本。     接着需要选择适合的开发环境,例如Android Studio或Xcode,以便进行手机游戏开发。在安装完Unity后,需要根据项目需求下载对应的模块和插件,例

    2024年02月16日
    浏览(79)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包