• unity resources文件夹作用


    本篇文章讨论了Unity中的 Resources 系统。通过Resources系统,开发者可以将Asset资源放在一个或多个名为 Resources 的文件夹中,并且在运行时利用Resources API来加载或卸载这些Asset中的Object。

    1 Resources系统的最佳实践

    不要使用它!

    强烈不建议使用Resources系统,原因如下:

      1.1使用Resources文件夹将会使细粒度的内存管理变得更难

        对Resources文件夹的不恰当使用会导致应用程序构架和启动时间变长

      1.2随着Resources文件夹数量的增加,在这些文件夹中管理Asset将会变得越来越难使用Resources系统会降低项目向不同平台提供定制内容的能立,并且导致项目无法进行增量内容更新

        AssetBundle变体是Unity用来在设备层面调整内容的首选工具

    2 合理地使用Resources系统

    在下面两种特殊情况中,Resources系统会很有用,而且不会影响开发体验:

      2.1Resources系统简单易用的特点使其非常适合用于快速开发原型。不过,当项目进入正式开发阶段时,应该停止使用Resources文件夹。

      2.2Resources文件夹可以用于处理一些简单的内容:

        2.2.1在项目的整个生命周期中都被使用的内容

        2.2.2非内存密集型内容(解释:内存里并不保存,每次使用都去Load,动态加载方式)

        2.2.3不太可能添加补丁或者不受平台和设备影响的内容

        2.2.4用于最小化引导的内容 

    第二种情况包括用于持有预制体的MonoBehaviour单例、包含第三方配置数据的ScriptableObject容器等。

    2.3 Resources的序列化

    当项目被构建时,所有名为Resources的文件夹中的所有Asset和Object都会合并到同一个序列化文件中。这个序列化文件中还含有元数据(Metadata)和索引(Indexing)信息,类似于AssetBundle。正如AssetBundle文档中所描述的那样,这个索引中包含了一个用于将给定Object名称转换为恰当的File GUID和Local ID的序列化查找树,同时它也用于定位在序列化文件中偏移了指定字节数的Object。

    在大多数平台上,用于查找的数据结构是平衡查找树,其时间复杂度为O(nlog(n))。因此,索引加载时间随Resources文件夹内Object数量而增长的速度高于线性增长。

    加载Resources文件这一操作无法跳过,它会在应用程序启动显示不可交互的启动画面(Splash Screen)时执行。在一台低端设备上,初始化一个包含10000个资源文件的Resources系统要花费几秒的时间,然而在Resources文件夹中的这些Object很多都不会在应用程序的第一个Scene中使用到,完全没有必要加载。

    本帖抄自:Unity资源管理(二)-Resources文件夹_Arvin的博客-CSDN博客

    自己额外领悟内容:

      1.资源文件不要放到Resources文件,而放到AB里;

      2.Resources文件打在应用包里,会增加包体大小和加载速度,影响用户下载速度和点击打开应用后的加载时间。

      3.不支持热更新,因为打在应用包里了,想热更新还得放到AssetBundle里

  • 相关阅读:
    不使用第三个变量来交换两数的值
    关于索引的注意事项(何时创建,索引无效,索引数量)
    MySQL文档生成工具mysql_markdown
    在windows如何下载android源码
    redmibuds3青春版串联 小米耳机只有一只耳朵响 耳机只有一边出声
    深入浅出玩转fPGA读书笔记
    crisis is comming stone
    Kubernetes入门(七)
    Kubernetes入门(六)
    Kubernetes入门(三)
  • 原文地址:https://www.cnblogs.com/workharder/p/15206146.html
Copyright © 2020-2023  润新知