Unity3D游戏开发之如何优化贴图占用内存
来源:互联网 发布:云计算 校园招聘 编辑:程序博客网 时间:2024/05/27 09:48
Unity3D游戏开发占用的内存中,UI部分主要是贴图资源和字体资源。其中贴图是单张图片,而字体包括UIFont和TrueTypeFont(TTF)。而今天我们就主要来看看如何优化贴图占用的内存:
(1)缩减贴图占用内存
注意,贴图资源占用内存大小不等于文件大小,而是与资源导入设置有关。同一个导入设置则只与资源宽高尺寸有关,与资源原始文件格式无关。在进行安装包大小瘦身时,已针对各种应用场景,有损或无损的缩减贴图资源大小。由于资源加载后占用内存大小与安装包打包前资源大小一致,所以安装包瘦身实际上也是在减少贴图资源占用内存大小。
举个例子:一张512x512贴图。
使用RGBA 32bit真彩,占用内存 = 4Bytes*512*512 = 1MB;
使用RGB ETC 4bit压缩,占用内存 = 0.5Bytes*512*512 = 128KB。
具体的压缩选型和操作细节,可参考菜鸟在线官网Unity3D游戏开发课程讲解。注意:某些压缩方式是无损的,某些是有损的,开发者应按需采用。
(2)拆分大资源,且按需加载
贴图资源使用方式包括UITexture和UIAtlas这两类。其本质都是一张图片,区别在于UITexture是单张大图,而UIAtlas是多张小图合集做成一张大图。某些应用场景中可以将大尺寸UIAtlas拆分为小尺寸UIAtlas和多个UITexture,然后按需加载显示。拆分后内存占用大小<=拆分前内存占用大小。
举个例子:新手引导图集(调整前1024x1024,4MB)。
单局中并不需要同时显示全部角色和道具Icon。于是可拆分成多个,按需加载,即可减少占用内存总大小。
新手引导图集(调整后1024x512,2MB)。
再加数个拆分出来的小图(几百KB)。
(3)及时回收过时资源
方法(1)优化了常驻的内存大小。如果一张贴图使用后不再被使用,又没有被及时回收,那么内存占用总量会只增不减。这些过时资源应及时回收。
实践中发现几个现象,该如何处理?编辑器单个资源占用大小值是真机的两倍。以真机为准。
编辑器停止运行游戏,再次运行时依然看到上次运行时的贴图资源,需重新启动编辑器才能彻底清除。是编辑器自身引用了资源。以真机为准。
GameObject被Destroy销毁后,依然看到贴图资源有被引用。编辑器和真机现象一样。
好了,今天的讲解就先到这里,若还有不明白之处,欢迎来菜鸟在线官方查看,还有很多在线Unity3D游戏开发课程为你准备。
- Unity3D游戏开发之如何优化贴图占用内存
- 【Unity3D游戏开发】性能优化之Texture图片空间和内存占用分析(三七)
- Unity3d游戏开发之如何使用烘焙贴图(二)
- unity3d游戏开发之UV贴图教程
- [Unity优化]减少内存占用:贴图优化
- Unity3d游戏开发之使用烘焙贴图教程(一)
- Unity3d游戏开发之使用烘焙贴图教程
- [Unity3D]Unity3D游戏开发之2D贴图实现血条组件
- unity3d游戏开发之 游戏贴图、模型基本规范(Q&A)
- Unity3D游戏开发之如何隐藏物体
- Unity3d游戏开发之如何接入SDK
- Unity3D游戏开发之如何做个好主程
- Unity3d 如何优化内存
- 【Unity3D游戏开发】性能优化之如何将包大小减少到极致(三六)
- 游戏开发优化之路 之 Unity3D 渲染统计窗口
- 游戏开发优化之路 之 Unity3D 渲染统计窗口
- 游戏开发优化之路 之 Unity3D 渲染统计窗口
- unity3D游戏开发之浅谈如何提高游戏生命力
- Redis订阅&发布以及python代码实现
- 脏读、不可重复读 共享锁、悲观锁 和 事务五种隔离级别
- 设计模式之观察者模式
- Error Domain=NSURLErrorDomain Code=-999错误
- iOS9搜索三剑客之NSUserActivity
- Unity3D游戏开发之如何优化贴图占用内存
- 毕业生笔记-项目构建
- glassfish4新特性
- HTML中 &emsp等空格的区别
- MediaPlayer播放assert目录下的音频文件
- Android read write json
- 关于ibatis insert返回值
- unity playmaker player
- The Country List(杭电12月比赛)