什么是Resources System?

Resources System是Unity官方内置的一个资源管理系统,开发者可以将Asset资源放在一个或多个名为 Resources 的文件夹中,通过Resources System可以在Unity运行时加载或卸载Resource文件中的Objects

注:

Asset:Assets文件夹下的文件称为"Asset",Asset是存储在硬盘中的

Objects:Object是Asset的实例,也就是Asset的克隆,Object存储在内存中。

Resources文件夹中结构复杂,资源多会造成什么样的影响?

  1. 包体、内存增加,每个resource文件都会被编译到包体中
  2. 随着资源文件夹数量的增加,管理这些文件夹中的资产变得非常困难
  3. 资源文件夹的不当使用将增加应用程序的启动时间和构建的长度
  4. 游戏启动时间增加,在启动时,对Resources文件夹下的所有对象都需要进行Instance ID实例化,在大多数平台上用于查找的数据结构是平衡查找树,其时间复杂度为O(nlog(n)),因此,索引加载时间随Resources文件夹内Object数量增长而高于线性增长。

如何适当的使用Resources System

  1. 该内容在会在整个游戏生命周期存在
    1. monobehavior singeton
    2. loading prefab
    3. 序列化的配置数据
    4. ...
  2. 资源占用内存小
    1. 名字随机配置
    2. 默认头像icon
    3. 道具品质框
    4. ...
  3. 不参与热更新的资源
  4. 不会因为平台或者设备变化的资源

参考资料

Unity游戏性能优化Resources System

对Unity资源Asset和对象Object的理解

Unity性能优化之Resources System