AssetBundle03

首先附上原文链接:https://unity3d.com/cn/learn/tutorials/topics/best-practices/resources-folder

                                              Resources文件夹

        这是关于Unity5中的Asset,资源和资源管理的系列文章的第三章。

        本章将讨论Resources系统,这是一个允许开发者将Asset存储在名为Resources的一个或多个文件夹中并且使用Resources API在运行时从这些Asset中加载或卸载Object的系统。


2.1 Resource系统的最佳实践

        别使用它。

        这个强有力的建议有几个原因:

        ·使用Resources文件夹会使细粒度的内存管理变得更加困难

        ·Resources文件夹使用不当会增加应用程序启动时间和构建时间

                ——随着Resources文件夹数量的增加,这些文件夹中Asset的管理变得非常困难

        ·Resources系统降低了项目将用户内容传送到特定平台的能力,并消除了增量内容升级的可能性

                ——AssetBundle变体是Unity根据每个设备底层调整内容的主要工具


2.2 正确使用Resources系统

        在不妨碍良好开发实践的情况下,Resources系统在这两种特定情况下的使用时有帮助的:

        1.Resources文件夹的简易性使其成为项目在快速原型阶段的优秀系统。但是,当项目进入全面生产阶段时,应取消使用Resources文件夹。

        2.Resources文件夹可能在一些微不足道的情况下很有用。如果内容是:

        ·一般在项目的整个生命周期中都需要

        ·不是内存密集型的

        ·不倾向于打补丁,或是不变化平台或设备

        ·用于最小的引导指令

        第二种情况的例子包括用于持有预制体的MonoBehaviour单例,或是包含第三方配置数据的ScriptableObject,如Facebook应用程序ID。


2.3 Resources的序列化

        在构建项目时,在所有叫Resources的文件夹中的所有Asset和Object合并成一个单独的序列化文件。该文件还包含元数据和索引信息,类似于AssetBundle。如AssetBundle文档中所述,此索引包含一个序列化的查找树,用于将给定Object的名称解析为正确的File GUID和Local ID。它也用于在序列化文件体中的一个特定的比特补偿中定位对象。

        在大多数平台上,查找数据结构是一个平衡搜索树,其构建时间(时间复杂度)以O(nlog(n))速率增长。随着Resources文件夹中Object数量的增加,这种增长也会导致索引的加载时间增长超过线性。

        此操作是不可跳过的,并且出现在应用程序启动时的初始非交互闪屏画面上。据观察,初始化包含10,000个Asset的Resources系统在低端移动设备上会消耗很多秒,即使Resources文件夹中包含的大部分Object很少真正需要加载到应用程序的第一个场景中。

你可能感兴趣的:(AssetBundle03)