【Unity每日一记】SceneManager场景资源动态加载

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

【Unity每日一记】SceneManager场景资源动态加载,# Unity精华一记,unity,游戏引擎,c#,场景加载


👨‍💻个人主页:@元宇宙-秩沅

👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

👨‍💻 本文由 秩沅 原创

👨‍💻 收录于专栏unity每日一记

⭐🅰️推荐文章⭐


⭐【软件设计师高频考点暴击】

⭐【Unityc#专题篇】之c#系统化大礼包】

⭐【unity数据持久化】数据管理类_PlayerPrfs

⭐【unity本站最全系列】unity常用API大全一篇文章足以
【Unity每日一记】SceneManager场景资源动态加载,# Unity精华一记,unity,游戏引擎,c#,场景加载


⭐⭐



🎶SceneManager场景资源动态加载



👨‍💻👍加载场景的方法

  • SceneManager.LoadScene() ; 场景同步加载
  • SceneManager.LoadSceneSAsyn(); 场景异步加载
  • SceneManage。GetActiveScene().name判断当前场景
  • Application.LoadLevel():同步加载
  • Application.LoadLevelAsync():异步加载
  • Application.LoadLevelAddictive():同步附加式加载
  • Application.LoadLevelAddictiveAsync():异步附加式加载

👨‍💻👍SceneManasger的操作

首先添加场景加载的命名空间Using UnityEngine.SceneManagement ;
而后把游戏场景都保存(拖拽)在 Buid setting 里面,相当于存储场景的目录

【Unity每日一记】SceneManager场景资源动态加载,# Unity精华一记,unity,游戏引擎,c#,场景加载


1.同步加载

SceneManager.Load( 序列号) ;
SceneManager.Load( “场景名”) ;

 void Start()
    {
        //SceneManager.LoadScene(1);
        //SceneManager.LoadScene("TriggerTest");
    }


缺点:加载时造成画面卡帧,因为,在未加载完成前画面是停止的,所以是卡帧现象


2.异步加载

如果当前场景 对象过多或者下一个场景对象过多
这个过程会非常的耗时 会让玩家感受到卡顿
所以异步切换就是来解决该问题的

通常我们和协程一起使用:

  • SceneManager.LoadAsync(序列号)

  • SceneManager.LoadAsync(“场景名”)

  • StartCoroutine(协程迭代器方法() ); //调用协程

  • AsyncOperation 该类型翻译为异步操作 ,为下面获得异步场景的返回值
    AsyncOperation ao= SceneManager.LoadSceneAsync(2);

  • ao.allowSceneActivation = true 激活场景

  • ao.progress 场景加载的进度

//-----1.通过事件回调函数 异步加载------

        AsyncOperation SS = SceneManager.LoadSceneAsync("XXXX");
        SS.completed += (a) =>
        {
            print("加载结束");
        };
        SS.completed += LoadOver;
      private void LoadOver(AsyncOperation ao)
      {
        print("LoadOver");
      }

//---------2.通过协程异步加载--------
     
    void Start()
    {   
        //由于场景加载后就不会执行加载后的逻辑了,如果要保存就使用 DontDestroyOnLoad(保留场景加载上个场景的东西)第一个异步方法不会出现该情况
        DontDestroyOnLoad(this.gameObject); 
        StartCoroutine(LoadScene("XXXX"));
    }
    
    IEnumerator LoadScene(string name)
    {     
        AsyncOperation SS= SceneManager.LoadSceneAsync(name);                      
//根据游戏规则 自定义进度条变化的条件
        yield return SS;
        //1.场景加载结束 更新20%
        //2.动态加载怪物再更新20%
        //3.动态加载场景模型进度条顶满 
        //4.加载结束隐藏进度条
    }

总结

场景异步加载 和 资源异步加载 一样

    1.通过事件回调函数
    2.协程异步加载
  • 1.事件回调函数
    优点:写法简单,逻辑清晰
    缺点:只能加载完场景做一些事情 不能在加载过程中处理逻辑

  • 2.协程异步加载
    优点:可以在加载过程中处理逻辑,比如进度条更新等
    缺点:写法较为麻烦,要通过协程

场景管理器
public class SceneControl
{
    private static SceneControl instance = new SceneControl();

    public static SceneControl Instance => instance;

    private SceneControl() { }

    public void LoadScene(string name, UnityAction action)
    {
        AsyncOperation SS = SceneControl.LoadSceneAsync(name);
        SS.completed += (Scene) =>
        {
            action();
        };
    }
}

⭐🅰️系统路线学习点击跳转⭐


⭐【Unityc#专题篇】之c#进阶篇】

⭐【Unityc#专题篇】之c#核心篇】

⭐【Unityc#专题篇】之c#基础篇】

⭐【Unity-c#专题篇】之c#入门篇】

【Unityc#专题篇】—进阶章题单实践练习

⭐【Unityc#专题篇】—基础章题单实践练习

【Unityc#专题篇】—核心章题单实践练习


你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!


【Unity每日一记】SceneManager场景资源动态加载,# Unity精华一记,unity,游戏引擎,c#,场景加载文章来源地址https://www.toymoban.com/news/detail-661126.html


到了这里,关于【Unity每日一记】SceneManager场景资源动态加载的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Unity 3D开发--SceneManager场景管理(异步使用同一个过渡场景)

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

    2024年02月14日
    浏览(32)
  • Unity 从服务器加载AssetBundle资源写入本地内存,并将下载保存的AB资源从本地内存加载至场景

    AB资源打包后有一个【目录文件】AssetBundle,他保存了所有AB资源的路径与名称, 通过aLLAssetBundleURL链接路径 组拼 从【目录文件】获得的AB资源的名字,然后再协程方法内编写相关代码,从而实现从服务器加载资源的功能。详细见代码。

    2024年02月13日
    浏览(31)
  • Unity基础3——Resources资源动态加载

    ​ 注意:需要我们自己创建 ​ 作用:资源文件夹 需要通过 Resources 相关 API 动态加载的资源需要放在其中 该文件夹下所有文件都会被打包出去 打包时 Unity 会对其压缩加密 该文件夹打包后只读 只能通过 Resources 相关 API 加载 ​ 注意:需要我们自己将创建 ​ 作用:流文件

    2024年02月10日
    浏览(28)
  • 05_Unity动态加载图片资源

    本文归纳了Unity中加载图片资源的常用方法,包括url和本地路径的加载。 在工具类中封装如下方法: 一般是放在单例中,如:GameManager 创建一个Image物体 在本地存放一张图片,Guide1.png 放置在: Resources/Image/Guide1.png 路径下 在物体上挂接一个测试脚本 执行前: 执行后: 还是刚

    2024年02月05日
    浏览(100)
  • Unity动态加载资源 - 从硬盘任意地址加载任意格式3D模型

    前言 一、Unity官方给的动态资源加载方式 二、Unity中调用windows资源管理器 三、从资源管理器获得文件地址后复制到Unity指定文件夹 附上全部代码(不完善,仅框架) Unity官方给的动态资源加载方式就不赘述了。大体分为3种:(1) Resources.Load (2)AssetBundle(3) WWW加载 。 其中前两

    2024年02月04日
    浏览(33)
  • 【unity每日一记】unity中常见的特性大全

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 : unity每日一记 ⭐【Unityc#专题篇】之c#系统化大礼包】 ⭐【unity数据持久化】数据管理类_PlayerPrfs ⭐【unity本站最全系列】unity常用API大全

    2024年02月11日
    浏览(79)
  • 【unity每日一记】transform类精华之珠

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 : unity每日一记 ⭐【Unityc#专题篇】之c#系统化大礼包】 ⭐【unity数据持久化】数据管理类_PlayerPrfs ⭐【unity本站最全系列】unity常用API大全

    2024年02月11日
    浏览(40)
  • 【Unity每日一记】Unity不知道如何选择,移动方法,来瞧瞧

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 : unity每日一记 ⭐【软件设计师高频考点暴击】 ⭐【Unityc#专题篇】之c#系统化大礼包】 ⭐【unity数据持久化】数据管理类_PlayerPrfs ⭐【u

    2024年04月15日
    浏览(38)
  • 【Unity每日一记】WheelColider组件汽车游戏的关键

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 : unity每日一记 ⭐【软件设计师高频考点暴击】 ⭐【Unityc#专题篇】之c#系统化大礼包】 ⭐【unity数据持久化】数据管理类_PlayerPrfs ⭐【u

    2024年02月10日
    浏览(30)
  • 【Unity每日一记】摄像机相关代码API大全

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 :Unity基础实战 直接作为子对象课实现简单跟随 通过向量的加减更新相机位置来保持简单的跟随 差值位置的实时更新 😶‍🌫️步骤:

    2024年02月12日
    浏览(34)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包