当前位置: 首页 > news >正文

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

http://www.lryc.cn/news/438761.html

相关文章:

  • Flutter之SystemChrome全局设置
  • Windows11 WSL2的ubuntu 22.04中拉取镜像报错
  • 【Linux】多线程:线程同步、条件变量
  • 【Android Studio】使用雷电模拟器调试
  • 你必须知道的C语言问题(9)
  • 如何通过网络找到自己想要的LabVIEW知识?
  • SCRM电商管理后台Axure高保真原型 源文件
  • 重载new,delete , RTTI,类成员指针
  • 基于SSM+Vue+MySQL的在线医疗服务系统
  • Windows 11上pip报‘TLS/SSL connection has been closed (EOF) (_ssl.c:1135)‘的解决方法
  • 53 - I. 在排序数组中查找数字 I
  • 基于 TDMQ for Apache Pulsar 的跨地域复制实践
  • 无线通信感知/雷达系统算法专业技术栈
  • 离谱碾压!奇安信中标:高出第二名近70分!
  • HOT 100(七)栈、堆、贪心算法
  • 速盾:高防服务器租用需要注意什么事项
  • 【数据库】MySQL内置函数
  • Promise查漏及回调地狱结构优化
  • SpringCloud-05 Resilience4J 服务降级和熔断
  • 哈希表、算法
  • 变更AWS EC2 实例配置或实例类型
  • 【前端】ref引用的作用
  • 运用Java实现倒计时功能
  • Vue 第三方调用若依系统实现系统单点登录
  • IP纯净度对跨境电商有哪些影响
  • docker-01 创建一个自己的镜像并运行容器
  • 国产视频转换HDMI1.4转单/双MIPI DSI/CSI LT6911C芯片方案,带音频输出,QFN64封装 Lontium
  • 亚马逊、沃尔玛、敦煌网、Target塔吉特、Temu环境搭建测评技术!
  • yjs05——matplotlib画其他图像
  • 【C#】添加临时环境变量