Unity项目包体优化经验方法论(Android平台)

前言

本篇文章主要讲解对于Unity Android平台也就是APK包体的优化经验,使用哪些工具能够更加便利的定位资源重灾区。本篇讲解的方法中对于Unity资源使用的AssetBundle的方式,如果使用addressable或其他资源管理方式,我还不是很清楚是否适用,没有去验证过。

工具选择

工欲善其事,必先利其器。对于优化包体这项工作,我们需要选择各种工具搭配使用才能准确定位资源重灾区并选择合适的方式进行优化。下面先讲讲我们需要用到的各种工具。

AndroidStudio

AndroidStudio自带APK分析器,我们使用AndroidStudio也主要用到他的APK分析器来分析包体结构以及对比我们的优化效果

只需要将APK拖入AndroidStudio就能够分析APK结构信息 

优化完成后我们还能通过对比两个APK来比较优化效果

关于更多APK分析器的内容可以查看开发文档

 AssetStudio

我们可以使用AssetStudio对资源包进行解包,这里的资源包包括AssetBundle包以及Unity Resources文件打的包(assets/bin/Data/)目录下的资源。

  • 如果项目使用了资源加密,在优化的时候需要暂时先取消,优化后再开启资源加密
  • 由于 AssetStudio只支持Windows版本,如果你使用Mac,可以使用Parallels Desktop虚拟机安装或者尝试使用命 令行版本UnityPy

只需要加载文件夹就可以解析所有资源,这个工具多数用来反编译爬取资源(这样不可取:),用来辅助优化包体大小也很有用。选择Export->Asset list to XML->All Assets导出所有资源信息的xml格式。

通过这个表我们可以知道这个名字、大小、被哪些资源引用、类型信息。这样我们就可以通过自定义解析代码来分析优化。

Unity工程Editor工具

上面的工具可以让我们知道哪些资源为占用高的资源,确定了之后,我们是能够删除这些资源还是进行资源优化就需要使用到各种Unity Editor内创建的工具了。

资源引用查找工具

https://github.com/blueberryzzz/ReferenceFinder

下载上面这个工具,我们可以通过查找资源的依赖关系,对于哪些没有被使用的模型、贴图、材质球就可以直接删除,方便快捷。

资源引用丢失查找工具

为了防止我们错删误删资源,我们还需要一个安全检查机制,使用一个引用丢失查找工具就很好的帮我们检查。这部分可以去网上找找其他博主附有代码文章,还是有很多分享的,内容大差不差,我这里就不浪费篇幅把代码贴出来了。

AssetBundle Browser

这是一款Unity提供的插件工具,非常强大的工具

Unity Asset Bundle Browser tool | Package Manager UI website

可以很方便的查看资源被打到哪些AB包,并且是否存在多个包引用同一个资源导致的资源重复引入问题

但是由于这个工具用起来很消耗CPU性能,确实有点卡卡的,较为简单的可以直接使用 ReferenceFinder就能解决。

优化思路

从优化方向来看有下面几个方向

  1. 删除APK中没有用到的资源
  2. 重新分配重复打包资源
  3. 优化资源打包参数(TextMeshPro的纹理导出尺寸、图集压缩等级....)

其中重复打包资源这个是不易察觉,并且也可能是导致包体莫名其妙变很大的根本原因,这个问题不光导致包体增大,同时也会导致内存翻倍,优化优先级很高并且回报率也很高。

1.删除APK中没用到的资源

注意这里说的是APK中没用到的资源,意味着已经被打入APK包体内,但是实际上游戏是用不到的资源,如果去找工程没用到的资源,可能会非常多,这些资源如果没有被场景(需要被Build的场景)、AB包、Resources目录下引用就不会被打入最终的APK去。

要删除这些资源可以通过ReferenceFinder查找哪些资源没有被引用,然后删除即可。

2.重新分配重复打包资源

这部分资源的占比如果没有很好的管理,或者在日常开发中严格按照开发流程来做(主要是美术),就很容易出问题。

通过使用AssetBundle Browser工具辅助重新分配出问题的资源。

对于Resources目录下的资源就需要小心处理

警惕Resources资源

在优化包体的时候,注意到assets/bin/Data/这个目录很大,但是由于项目所用到的资源都是AB管理的,理应不这么大,通过AssetStudio查看发现里面包含了字体文件以及项目中用到的TextMeshPro生成的字符资源,最终发现是由于TMP_Settings这个设置文件资源引起的问题,由于这个资源会被TMP插件自动放到Resources目录下,Unity打包就会打进去

如果这里设置了项目中的TMP_Font Asset,恰好这个资源原本已经打了AB包,那此时就会在assets/bin/Data目录下多存在一份全套的字体资源🙃

Aertims
关注 关注
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity 面试篇|(四)Unity性能优化篇 【全面总结 | 持续更新】
游戏开发小Y的博客
01-12 5万+
Unity中,CPU准备好需要绘制的元素,对底层图形程序接口进行调用的过程,每次引擎准备数据并通知GPU的过程称为一次Draw Call。DrawCall越高对显卡的消耗就越大。降低DrawCall的方法:动态合批静态合批降低shader的等级特性场景优化策略——遮挡技术。rectMask2D替代Mask。
2024年Unity 面试题 |五萬字 二佰道| Unity面试题大全,面试题总结【全网最全,收藏一篇足够面试】
热门推荐
努力前行,总会成为自己心中的那道光
02-23 12万+
正所谓 金三银四 ,又到了找工作的大好时机了,不知道大家有没有意向找一份更好的工作呢~ 之前写了很多Unity的学习和实例文章,但是面试题部分还没有一个系统的整理。 那本篇文章就来整理一下Unity中一些常见的面试题,说不准就会面试的时候就会遇到! 本篇文章会将Unity所有方面的面试资料都融会贯通,绝对是2022年Unity面试领域最实用的文章啦!
Unity压包技术简介(优化
qq_37896049的博客
11-15 1823
1.查看包体是由什么构成的 模拟打包APK一次,Unity会输出打包日志,点击Console右上角,选择"Open Editor Log" Unloading 1780 unused Assets to reduce memory usage. Loaded Objects now: 3254. Total: 10.497625 ms (FindLiveObjects: 0...
[Unity 3D] Unity 3D 性能优化 (一)
凛日幽寒的专栏
09-14 7788
听到过很多用Unity 3D开发游戏的程序员抱怨引擎效率太低,资源占用太高,包括我自己在以往项目的开发中也头疼过。最近终于有了空闲,可以仔细的研究一下该如何优化Unity 3D下的游戏性能。 模型贴图等美术资源的优化,手头资源不足暂时不去涉及;Shader代码的性能优化也往后放放;这里先试着分析分析Unity 3D脚本中最常用代码段的执行效率。 GetComponent
探索资产宝藏:AssetStudio —— 资源探索与导出工具
gitblog_00151的博客
08-12 478
探索资产宝藏:AssetStudio —— 资源探索与导出工具 项目地址:https://gitcode.com/gh_mirrors/ass/AssetStudio AssetStudio 是一个独立的工具,专为深入探索、提取和导出Unity资源而设计。它源于我为3ds Max开发的Importer脚本,集成了我对多种文件格式的研究和逆向工程成果。虽然这个项目已经不再维护,但它在过去已被广泛测试...
Unity优化包体
路漫漫其修远兮,吾将上下而求索
05-19 1369
编译首包 1.使用il2cpp编译导出Android工程 2.使用Android Studio的Apk Analyze分析当前apk的大小 清理插件 这一步是比较快且收益比较高的,一般一些第三方的插件都可以较快的发现和清理,可以把一些不需要的插件进行清理,全局搜索Asset下的Plugins目录,把不需要的删除即可 注:可能有些插件删除了后,编译的apk出现闪退的情况,需要关注AndroidManifest.xml中对插件的引用,在删除插件后,删除对应的配置。 修改编译设置 1.使用il2cpp编译时会
Unity优化方案-内存篇-降低安卓平台包体
weixin_43559607的博客
02-02 1656
经过测试,经过上述优化方案,URP空工程可降低包体到14mb左右。为了更方便的定位占用内存的大资源,推荐一个插件,可在Unity编辑器中打包APK完毕之后自动显示编译过程中的资源使用情况。
Unity包体优化实践
Nbin_Newby的博客
07-05 2636
如果还有部分资源是需要直接嵌入在Apk里的,也可以进行资源的压缩,资源大小主要是模型和贴图,模型可以通过减面和更换低模进行优化,贴图也可以通过各种手段进行优化,最简单的方式是在Unity里进行各个贴图分辨率控制和贴图压缩,还有贴图的合并图集等。可以看到,我们的资源部分基本上没有任何占用了,但能看到Shaders还有一些占用,我们继续处理,这些shader实际上都是在工程里设置了always include shaders才引入的,有时候设置了但是又忘了去掉,又用不到,也会占用内存。
unity包体优化小计
qq_28976599的博客
08-10 777
unity包体相关
基于UnityAndroid平台上开发游戏的一般方法
08-06
总的来说,基于UnityAndroid平台上开发游戏的一般方法包括了解Unity引擎的基本概念、熟悉其编辑环境和工作流程,以及掌握脚本语言和资源管理。通过实践《玩转地球》这样的案例,开发者可以逐步掌握Unity游戏开发的...
Android移动开发项目:FlappyBird像素鸟Unity+cocos2dx源码分享
本次提供的压缩包文件名为“Android应用源码之FlappyBird像素鸟Unity+cocos2dx项目”,这个资源包被标记为适合于Android平台的移动应用开发,特别是针对毕业设计项目的学习。内容中提到了两个重要的游戏开发引擎:...
Build Report Tool 3.2.4(最新版unity打包资源分析工具)
01-18
Build Report Tool 3.2.4(最新版unity打包资源分析工具)
Unity 面试篇⚠️ | Unity性能优化好,山寨机都能跑~
m0_58523831的博客
06-10 7417
Unity 面试篇⚠️ | Unity性能优化好,山寨机都能跑~
Unity | 优化专项-包体 | 字体
Valiancer
04-26 1531
Android、iOS、微信小游戏(抖音小游戏暂不支持)平台,可以获取系统字体,动态创建备用字体资源,这样可以补充所有的字形,缺点是有可能和游戏中字体不一致,视觉效果差一些,但总要有取舍,就像这人生一样~在小游戏中,即使是常见汉字,大小也足以影响小游戏总包体,进而影响到下载及加载速度,因此在对游戏做包体优化时,字体也显得尤为重要。随着编辑器的运行调试,字体资源的图集纹理也会越来越大,如果构建时不清除图集纹理,最终的包体中,图集纹理也会占用对应的空间。具体代码如下,备用字体可以换成所需的字体名字。
Unity | 优化专项-包体 | 代码
Valiancer
05-23 1469
托管代码剥离将从托管程序集(包括从项目中的 C# 脚本构建的程序集、包含在包和插件中的程序集以及 .NET 框架中的程序集)中删除代码。但是经过本人实测,同一个项目,配置完全相同的情况,团结引擎开启一系列轻量化特性后,最终发布到微信小游戏的包体比 2021.3.x 版本大 1.5M,如果是我开启的姿势不正确的话,还请大佬们指点一二。可以看到最低和最高裁剪级别构建后的包体大小差距并不大,仅有 3.2M,此次对比并没有使用空包,虽然空包的差距更明显,但实际开发过程中不存在零行代码的情况,所以对比空包意义不大。
Unity - 性能优化 - 包体,内存 - 偏静态资源的优化
Jave.Lin 的学习笔记
01-22 3455
如果 产品 制作出来不经过优化,那不叫 产品,准确的说是:DEMO 今天做了一些项目分析,发现这个项目惨不忍睹 初步判断可以做的优化点: (下面是简述版本,详细的就不说了,免得影响可读性)
Unity包体优化
最新发布
m0_50811529的博客
09-27 1000
Unity包体优化是一个综合性的过程,涉及资源、代码、构建设置等多个方面。通过合理的优化策略和工具的使用,可以显著减少包体大小,提高游戏的加载速度和运行效率。在优化过程中,需要注意平衡性能、兼容性和用户体验之间的关系,确保优化后的游戏或应用能够满足用户的需求。
Unity优化】安卓包优化
承续缘
09-13 463
因为考虑到兼容性,Unity5-Untiy 2018打包发布Android包默认添加多个动态库。 Unity5-Untiy 2017:PlayerSettings面板中Device Filter默认是FAT(ARMv7+x86)。 Untiy 2018:PlayerSettings面板中Target Architectures同时勾选ARMv7和x86。 它们等于同时添加ARMv7+x86动...
优化Unity游戏项目的脚本(下)
SilverFoxGame的博客
10-09 206
金秋9月,我们祝所有的老师们:教师节快乐 ! 今天,我们继续分享来自捷克的开发工程师Ondřej Kofroň,分享C#脚本的一系列优化方法。 在优化Unity游戏项目的脚本(上)中,我们介绍了如何查找C#脚本中的问题,以及垃圾回收的处理。本文我们将介绍如何减少C#脚本的执行时间。 第二部分:减少脚本的执行时间 如果代码不经常调用,这部分提到的一些规则可能不会产生明显...
unity urp包体优化
06-10
针对Unity URP包体优化,有以下几点建议: 1. 精简资源:尽量减少不必要的资源,如未使用的材质、贴图、模型等,可以使用Unity自带的资源管理工具进行筛选和删除。 2. 压缩纹理:使用Unity自带的纹理压缩工具将...
写文章

热门文章

  • 使用VsCode开发Lua插件推荐(Lua) 38630
  • 前端项目开发经验总结(持续更新) 17768
  • Unity坐标转换UI与屏幕坐标之间的转换 10219
  • JavaScript读取指定目录下所有文件路径并输入(代码片段) 10092
  • LayaBox2.0使用自定义Shader(WebGL)踩坑系列 7835

分类专栏

  • Unity 16篇
  • Shadergraph 1篇
  • Shader 1篇
  • 数学 5篇
  • 3D 6篇
  • 代码片段 2篇
  • Web 6篇
  • 个人项目 2篇
  • Camera 1篇
  • WebAssembly 1篇
  • Flash 6篇
  • H5 11篇
  • Python 1篇
  • 安全 1篇
  • 性能 4篇
  • 抓包 1篇
  • 其它 5篇
  • 正则表达式 1篇
  • 前端经验 8篇
  • LayaBox 17篇
  • WebGL 5篇
  • 图形学习 4篇

最新评论

  • Unity TextMeshPro文本存在背景框的问题研究

    starson7424: 感谢,解决了我遇到的这个同样的问题

  • Unity加载优化-将基于LZMA的ab压缩方案修改为LZ4压缩的过程

    Aertims: github已提交https://github.com/dengxuhui/xlua-framework

  • 修复Unity编译时“AAPT2 aapt2-4.1.2-6503028-osx Daemon #0 Failed to shutdown within timeout”错误

    Aertims: 可以试一下[code=plain] noCompress = ['.unity3d', '.ress', '.resource', '.obb'] + unityStreamingAssets.tokenize(', ') [/code]

  • 修复Unity编译时“AAPT2 aapt2-4.1.2-6503028-osx Daemon #0 Failed to shutdown within timeout”错误

    糖果阿柴: Unity2020版本 似乎不能这么写了,楼主有了解吗?请教下要如何改

  • 【Bug记录】UnityEngine.Object与System.Object判空混用引起的问题记录

    如鱼得水2: “WeakReference是托管堆对象,需要gc后这个引用才会为空”,直接判断reference.Target == null不就好了

大家在看

  • 学习笔记—文件管理—minio,安装、集群部署及与Springboot结合 75
  • 常用Python数据分析开源库:Numpy、Pandas、Matplotlib、Seaborn、Sklearn介绍 228
  • MySQL查询优化:提升数据库性能
  • Advanced Renamer v4.05.0 文件批量重命名工具绿色版

最新文章

  • Image透明度点击简述以及Unity2019之后存在无法点击的BUG修复
  • ShaderGraph Vertex Position节点无法连接
  • UnityShaderBook中消融dissolve详解
2023年5篇
2022年6篇
2021年7篇
2020年8篇
2019年28篇
2018年10篇
2017年3篇
2016年3篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳坪山网站建设公司百度网站优化烟台技术沈阳网站seo优化方案浑南区品牌网站建设优化价格淮安智能化网站优化活动简介博罗专注网站优化获嘉资讯网站搭建优化网站诊断与优化实例分析仙居网站优化推广营口网站推广优化宿迁市网站关键词优化报价昌吉网站优化排名爱采购优化网站seo网站优化的岗位职责如何把自己网站优化最好的方法优化网站的方法甄选火29星择西安网站建设优化公司哪家好莞城电子网站优化服务包头怎么做网站优化企业网站优化怎样选择关键词专业网站优化首选兴田德润网站优化网站文章更新的五个技伊川网站优化怎么选北京销售行业网站优化西安优化网站推广方案seo优化网站降级内江网站建设和优化服务头条seo网站优化永人村seo网站优化方法昌平优化推广网站郑州网站优化推广怎么样香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

深圳坪山网站建设公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化