打开一个Unity工程,会看到其中有不同的目录,Unity工程的外部目录也有不少的目录,了解这些目录能帮助我们了解整个资源加载和导出的流程。
Resources目录
特点
Resources目录中的内容在打包时会直接被打到发布包中去。Resources目录有以下特点:
- 只读,无法动态更改,所以需要热更的资源不能放在这个目录里
- 目录内的资源会集成到.asset文件里
- 使用Resources.Load进行加载
- 主线程加载
- 文件会被进行压缩和加密
缺点
一般不推荐使用这个目录来对工程进行资源管理,主要有以下几方面原因:
- 使用Resources文件夹使得精细化的内存管理变得困难
- 不正确的使用Resources会导致项目构建时间和冷启动时间变长
- 使用Resources文件夹会降低我们将不同资源用于不同平台与不同性能设备的能力
在构建项目时,所有名为Resources的文件夹中的资源和对象会被合并到一个序列化的文件中,这个文件还包含元数据和索引。该索引包括一个序列化的查找树,在大多数平台上,都会使用平衡查找数这种数据结构来查找数据,其算法复杂度为O(nlog(n)),是一种超线性增长的算法,每次启动都会构建这棵查找树。因此Resources目录的文件越多,应用启动速度就会越慢。
优点
但由于Resources系统使用起来比较方便,所以在Demo期可以适当使用他,适应前期快速出Demo的需求。