目录
1.什么是Resources System
Resources System是Unity官方内置的一个资源管理系统,开发者可以将Asset资源放在一个或多个名为 Resources 的文件夹中,通过Resources System可以在Unity运行时加载或卸载Resource文件中的Objects.
2.关于Resources System的使用相关
1.官方强烈建议不要使用它
Resources System官方地址
理由一:使用Resources文件夹使得细粒度内存管理更加困难
理由二:资源文件夹的不当使用将增加应用程序的启动时间和构建的长度,随着资源文件夹数量的增加,管理这些文件夹中的资产变得非常困难
理由三:资源系统降低了项目向特定平台交付定制内容的能力,并消除了增量内容升级的可能性
2.如何适当的使用Resources System?
一.在制作游戏原型时,Resources文件夹的便捷性使其成为快速原型的优秀系统。但是,当项目进入全面生产阶段时,应该取消对Resources文件夹的使用。
二.Resources文件夹在一些琐碎的情况下可能很有用
1.在项目的整个生命周期中都被使用的内容
2.非内存密集型内容
3.不太可能添加补丁或者不受平台和设备影响的内容
4.于最小化引导的内容
3.当项目中Resources文件夹结构复杂,内容多会对应用造成什么影响?
1.内存增加,包体增加
Resources文件夹中的资源都会被打包编译到包体中,文件变大,包体也跟着变大。
2.管理复杂度增加
由于Resources资源结构复杂,在资源管理下的成本就会增加,同时内存管理的成本也会增加。
3.构建时间增加
在Resources文件夹下的所有Asset和Objects都会被合并到一个序列化文件中,该序列化文件的合并过程用时会随着文件内容的增加而增加。
序列化文件的相关补充:这个序列化文件中还含有Metadata和Indexing Information信息,其中索引包括一个序列化查找树,可以通过给定的对象名称解析出对应文件的GUID和LocalID,也可以根据给出的字节偏移量,将对象定位在序列文件的正文中。
4.影响游戏的启动时间
在启动时,对Resources文件夹下的所有对象都需要进行Instance ID实例化。在大多数平台上,用于查找的数据结构是平衡查找树,其时间复杂度为O(nlog(n))。因此,索引加载时间随Resources文件夹内Object数量增长而高于线性增长。