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

相关推荐
sindyra38 分钟前
Unity UGUI 之 Canvas Scaler
unity·游戏引擎
在路上看风景4 小时前
2.Square Grid
unity
程序猿阿伟5 小时前
《突破Unity热更新瓶颈:底层函数调用限制与生态适配秘籍》
unity·游戏引擎
龙智DevSecOps解决方案7 小时前
Perforce《2025游戏技术现状报告》Part 3:不同行业挑战以及Unreal、Godot、自研游戏引擎的应用趋势
游戏引擎·godot·游戏开发·perforce
在路上看风景7 小时前
13. UGUI合批
unity
jtymyxmz20 小时前
《Unity Shader》12.2调整屏幕的亮度、饱和度和对比度
unity·游戏引擎
AllBlue1 天前
unity嵌入安卓界面,如何显示状态
android·unity·游戏引擎
tealcwu1 天前
【Unity技巧】实现在Play时自动保存当前场景
java·unity·游戏引擎
tealcwu1 天前
【Unity基础】实现Scroll View跟随动态内容滚动
java·unity·游戏引擎
野奔在山外的猫1 天前
【文档】VSCode 配置 Unity 环境流程
unity