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

相关推荐
在路上看风景7 小时前
32. 代码优化
unity
在路上看风景7 小时前
01. 编辑器外观
unity
CreasyChan7 小时前
unity C# 实现屏蔽敏感词
unity·c#·游戏引擎
玉梅小洋9 小时前
Unity 2D游戏开发 Ruby‘s Adventure 2:主角和第一脚本
游戏·unity·游戏引擎·游戏程序·ruby·游戏开发
CG_MAGIC9 小时前
3D 烘焙资产导出:多引擎(Unity/Unreal)适配技巧
3d·unity·游戏引擎·效果图·建模教程·渲云
云上空1 天前
腾讯云使用对象存储托管并分享WebGL小游戏(unity3d)(需要域名)
unity·腾讯云·webgl·游戏开发·对象存储·网页托管
小贺儿开发1 天前
Unity3D VR党史主题展馆
unity·人机交互·vr·urp·展馆·党史
TopGames1 天前
Unity实现10万人同屏动态避障和导航寻路系统 支持3D地形
unity·性能优化·游戏引擎
在路上看风景1 天前
01. GUIContent
unity
托洛夫斯基扎沙耶1 天前
Unity中状态机与行为树的简单实现
unity·游戏引擎