Unity Resource System 优化笔记

Unity Resources System

定义

Resources System允许开发者在项目中的Resources文件夹下存放一个或多个资源文件夹,并且可以在Unity运行时通过Unity提供的API对资源和对象进行加载和卸载。

如果Resources中的文件结构复杂,内容多,会给应用常来什么影响?

1、内存增加、包体增加

2、管理复杂度增加

3、构建时间增加

4、影响游戏的启动时间

内存、包体增加,能详细说一下吗?

1、每个文件都有大小,在Resources文件夹下的资

源都会被编译到包体中。

2、文件变大,所儒内存也会赠加。

管理复杂度增加是什么?

Resources资源结构复杂,在资源管理上成本会增加,内存管理成本也会增加。

构建时间增加是什么

打包时间增加,在Resources文件夹下所有的资源和对象都会被合并到一个序列化文件中去,该序列化文件的合并过程会随着Resoure中资源的增加而增加。

序列化文件
metadata
indexing information 索引信息

该索引包括一个序列化的查找树,该树通过给定的对象的名称然后解析出该对象对应文件的GUID (文件的唯一标识)和local ID,它也可以在根据给出的字节偏移量,将对象定位在序列文件的正文中(它还用于将对象定位在序列化文件正文中特定字节偏移处)。

为什么会影响游戏的启动时间

在启动时,对项目中所有需要立刻用到的对象进行Instance Id实例化(如内置scene中引用),以及Resource文件夹下包括的所有对象都需要实例化。

启动对Resource文件的处理

在大多数乎台上,查找数据结构是平衡的搜索树 ,其构建时间以O(nlog((n))的速度增长,这种增长还导致索引的加载时间随着"资源"文件夹中"对象"数量的增加而线性增长

在应用启动进行闪屏显示的时候,该操作是不可以跳过的。

推荐放在Resources下的资源

1.该内容整个游戏生命周期都存在

例如:

MonoBehaviour的单例

序列化的配置数据(不会变)appId

加载界面的Prefab

2.资源所占内存小

例如:

名字随机配置

默认头像图标

道具品质框

3.资源不会热更新

需要热更新的不要放在Resources目录下

4.不会因为平台或者设备变化的资源

例如Android平台和IOS平台显示内容不一样,最后不要放在Resources目录下

以上4条可以相互结合使用

参考资料
Unity游戏性能优化Resources System 25-2

相关推荐
feiduoge4 小时前
教程 36 - 方向光照
windows·游戏引擎·图形渲染
怣疯knight6 小时前
Cocos creator判断节点是否能用的方法
unity·cocos2d
tealcwu6 小时前
Google Play的Keystore不可用时的解决方法
unity
呼呼突突6 小时前
Unity使用TouchSocket的RPC
unity·rpc·游戏引擎
qq_4286396118 小时前
虚幻基础:安装插件
游戏引擎·虚幻
qq 1808095121 小时前
从零构建一个多目标多传感器融合跟踪器
unity
平行云21 小时前
实时云渲染支持在网页上运行UE5开发的3A大作Lyra项目
unity·云原生·ue5·webgl·虚拟现实·实时云渲染·像素流送
AA陈超21 小时前
虚幻引擎5 GAS开发俯视角RPG游戏 P07-18.生成火球术
c++·游戏·ue5·游戏引擎·虚幻
鹏飞于天21 小时前
Shader compiler initialization error: Failed to read D3DCompiler DLL file
unity
wonder135791 天前
UGUI重建流程和优化
unity·游戏开发·ugui