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

相关推荐
虾球xz4 小时前
游戏引擎学习第298天:改进排序键 - 第1部分
人工智能·学习·游戏引擎
EQ-雪梨蛋花汤7 小时前
【Part 3 Unity VR眼镜端播放器开发与优化】第一节|基于Unity的360°全景视频播放实现方案
unity·音视频·vr
Magnum Lehar17 小时前
vulkan游戏引擎的platform文件实现
游戏引擎
海 月1 天前
Unity EventCenter 消息中心的设计与实现
unity·消息中心
虾球xz1 天前
游戏引擎学习第307天:排序组可视化
c++·学习·算法·游戏引擎
虾球xz1 天前
游戏引擎学习第306天:图结构排序的调试
c++·学习·算法·游戏引擎
北冥没有鱼啊1 天前
UE 材质几个输出向量节点
ue5·游戏引擎·ue4·虚幻·材质
为你写首诗ge1 天前
【Unity网络编程知识】Unity的 UnityWebRequest相关类学习
网络·unity
Dr.勿忘1 天前
Unity异步加载image的材质后,未正确显示的问题
ui·unity·c#·游戏引擎
虾球xz2 天前
游戏引擎学习第301天:使用精灵边界进行排序
学习·算法·游戏引擎