close
当前位置: 物联网在线 > 物联网设计开发 > 技术文章 >

Unity3D游戏内存瘦身指南: UI优化是关键

游戏占用的内存中,UI部分主要是贴图资源和字体资源。其中贴图是单张图片,而字体包括UIFont和TrueTypeFont(TTF)。

  资源占用内存大小,从Unity Profiler可看到许多细节。

 Unity3D游戏内存瘦身指南: UI优化是关键

  一、贴图占用内存优化

  (1)缩减贴图占用内存

  注意,贴图资源占用内存大小不等于文件大小,而是与资源导入设置有关。同一个导入设置则只与资源宽高尺寸有关,与资源原始文件格式无关。在进行安装包大小瘦身时,已针对各种应用场景,有损或无损的缩减贴图资源大小。由于资源加载后占用内存大小与安装包打包前资源大小一致,所以安装包瘦身实际上也是在减少贴图资源占用内存大小。

  举个例子:一张512x512贴图。

  使用RGBA 32bit真彩,占用内存 = 4Bytes*512*512 = 1MB;

  使用RGB ETC 4bit压缩,占用内存 = 0.5Bytes*512*512 = 128KB。

  具体的压缩选型和操作细节,可参考安装包瘦身一文。

 Unity3D游戏内存瘦身指南: UI优化是关键

  某些压缩方式是无损的,某些是有损的,应按需采用。

  二维纹理 Texture 2D 的导入参数说明:

  

  (2)拆分大资源,且按需加载

  贴图资源使用方式包括UITexture和UIAtlas这两类。其本质都是一张图片,区别在于UITexture是单张大图,而UIAtlas是多张小图合集做成一张大图。某些应用场景中可以将大尺寸UIAtlas拆分为小尺寸UIAtlas和多个UITexture,然后按需加载显示。拆分后内存占用大小<=拆分前内存占用大小。

  举个例子:新手引导图集(调整前1024x1024,4MB)。

 Unity3D游戏内存瘦身指南: UI优化是关键

  单局中并不需要同时显示全部角色和道具Icon。于是可拆分成多个,按需加载,即可减少占用内存总大小。

 Unity3D游戏内存瘦身指南: UI优化是关键

  新手引导图集(调整后1024x512,2MB)。

 Unity3D游戏内存瘦身指南: UI优化是关键

  再加数个拆分出来的小图(几百KB)。

 Unity3D游戏内存瘦身指南: UI优化是关键

  (3)及时回收过时资源

  方法(1)优化了常驻的内存大小。如果一张贴图使用后不再被使用,又没有被及时回收,那么内存占用总量会只增不减。这些过时资源应及时回收。

 Unity3D游戏内存瘦身指南: UI优化是关键

  实践中发现几个现象:

 Unity3D游戏内存瘦身指南: UI优化是关键

 Unity3D游戏内存瘦身指南: UI优化是关键

  回收UI资源的代码片段(供参考):

 Unity3D游戏内存瘦身指南: UI优化是关键

  此方法在Application.LoadLevel前后执行。此方法有些暴力,全部UITexture和UIAtlas的贴图资源都被扫描且可能被UnloadAsset。

  此处白名单Texture和动态创建Texture需单独处理,否则可能报错。举例:下图是UnloadAsset网络下载的玩家头像报错了。

 Unity3D游戏内存瘦身指南: UI优化是关键

  如果贴图资源再次使用,那么在加载prefab时会重新加载相关贴图资源。

  其中包含几个关键方法:

 Unity3D游戏内存瘦身指南: UI优化是关键

  注意这里卸载资源用协程分了几帧实现。受限于上述方法的先后执行顺序,放在同一帧处理达不到卸载的目的。

  二、字体占用内存优化。

  (1)UIFont字体,占用内存大小与字体贴图资源导入设置有关。优化思路同Texture贴图,包括缩小字号、只制作所需字符、复用字体等。比如以下字体同时用在单局结算分数和伙伴技能冒字。

 Unity3D游戏内存瘦身指南: UI优化是关键

  (2)TTF字体,占用内存大小等于文件大小。优化思路是尽量复用字体,减少使用差异化字体。

 Unity3D游戏内存瘦身指南: UI优化是关键

 Unity3D游戏内存瘦身指南: UI优化是关键

  三、效果举例。

  经过先前安装包瘦身,已减少几十MB贴图资源占用内存。

  又依照上述方法优化,包括缩减资源尺寸(红色)、卸载过时资源(绿色)、整合字体(橙色),进一步又减少了约26MB内存占用。

 Unity3D游戏内存瘦身指南: UI优化是关键


(责任编辑:ioter)

用户喜欢...

人肉推荐才是王道:Google Play独立手游节发布Android游戏TOP20大名单

Google Play独立游戏节是大数据时代通过人工推荐来提高优秀APP曝光率和可视性的另外一个尝试。IT经理网...


《绝地求生》大数据:游戏时长25815年,吃鸡10255吨

《绝地求生》游戏自从3月底发售,四个月的销量突破了600万,而这其中国内玩家占比大约在19.47%,数量也是超过了...


全球最快的嵌入式内存,宜鼎国际推出全球首款嵌入式DDR4 2666MT/s DIMM

工控与嵌入式储存解决方案领导厂商—宜鼎国际(Innodisk),今日宣布推出全球首个全系列DDR4 2666嵌入式内存模块解决...


除了游戏,增强现实 AR 还能用在哪里?

AR的积极发展除了宝梦可游戏全球流行外,也从市场投资金额中显现,依据市场调查公司在报告指出,在今年初增强现...


5800元!HMD意外自曝全面屏旗舰诺基亚9:8G内存

对于这一点,俄罗斯媒体4pda报道称,HMD Global的负责人在采访中透露,他们还在准备一款屏幕更大的产品,会让更多消...


Unity3D入门教程——游戏开发利器UGUI的基本使用方法

UGUI是Unity官方推出的新一代交互系统,与传统的GUI相比,它具有使用灵活、界面美观、支持个性化定制的特点。本文将会进行UGUI使用的简单介绍,与大家一起敲开UGUI开发的大门。 说到底,...


找出物联网成长的真正驱动力 物联网游戏规则就此改变!

时至今日,物联网这个概念即便喊了很久,却始终还没有达到爆炸式成长的阶段。不过,近日不少专家预测,随着消...


6G内存!三星Galaxy Note 8跑分曝光:真厉害

按照惯例,历代三星Galaxy Note系列产品都堪称是机皇一般的存在,这次三星Note 8理论上也不会有什么意外。...


【原创深度】增强现实:超越游戏领域的现实世界解决方案

彼特•布朗 贸泽电子 若在大街上随机采访一路人有关虚拟现实(VR)的概念及工作方式,大多数人会倾向于回答VR的技术内容,甚至将其等同于电视剧“星际迷航:下一代”里应用的VR技术。...


Alienware与戴尔发布全新高性能游戏和VR装备,为玩家带来炫酷体验

Alienware与戴尔今日发布全新PC游戏系统和组件,包括采用AMD Threadripper全新多核处理器选项的高端Alienware游戏台式机、...