网易首页 > 网易号 > 正文 申请入驻

【厚积薄发】技术分享连载(九十九)| 加快Unity打包速度| AssetBundle增量打包 | IPA包体大小问题...

0
分享至

我们将从日常技术交流中精选若干个开发相关的问题,建议阅读时间15分钟,认真读完必有收获。如果您有任何独到的见解或者发现也欢迎联系我们,一起探讨。

UWA QQ群:465082844

UWA 问答社区:answer.uwa4d.com

资源管理

Q:目前我们项目打出来的APK大小在120MB 左右,打一次包平均耗时在20~25分钟。Build过程中绝大部分的耗时在“Building Scene0”和“Building additional assets”这两个阶段。请问这两个阶段Unity具体是在做哪些操作?有没有什么方式可以减少这阶段的耗时?另外如果从硬件层面考虑,如何更有效地提高打包速度?提高硬盘的读写速度和CPU的性能又分别能带来怎样的耗时收益?

A:我们使用的是AssetBundle的方式,目前600MB的包,没有太多资源修改的情况下,安卓包出包大约10分钟左右,之前是7-8分钟,不修改C#代码单独出Patch的话大致在5-7分钟。

我们在用的安卓打包机价格大约是1万左右,多CPU并且保证单核CPU的性能也是尽量高一些,SDD肯定必备,其他的没什么关系。

我们的CPU使用的是:

提醒一下关于贴图压缩,之前我们一直被贴图压缩折磨,高品质实在是太慢,后来我们是区分了Dev和Pub版本,Dev版本本地贴图压缩使用Fast,发布用的Pub版本才用Best的品质,速度快了非常多~即使美术大量修改贴图,Dev版本出包也很快。

感谢贾伟昊提供了上述回答。

A:我很久之前在Github上发现了这个东西:
pvrtextool_wrapper:https://github.com/fxgames/pvrtextool_wrapper

Unity打包会调用pvrtextool,通过这个wrapper替换掉原始程序,这样可以在打开发版本时,强制把压缩质量设置到fast模式,这样就可以节约大量的时间,而不需要修改任何贴图的压缩质量参数。如果觉得Mac Pro太贵了,可以试一下这个方法。

感谢lujian提供了上述回答。

A:Building Scene 是Unity在打包场景资源中,Building additional assets 是Unity在打包Resources中的资源,我们项目接近600MB了,每次出包都要50分钟以上,苦不堪言。你可以尝试这样:

1)把资源全部使用AssetBundle的形式。除了第一次,在下次出包的时候,只会打包有变化和增量的资源。因为Resources的每次出版本都会重新打资源。这样可以将没修改的资源打包耗时省下来。

2)配置个好的电脑,把CPU换个好点的,硬盘换成SSD的。

以上2点能节省你出包的时间,目前也是我们使用的方法

感谢 hejianchun提供了上述回答。

该问题来自UWA问答社区,如您对该问题仍有疑问,可以转至社区进行进一步交流。

https://answer.uwa4d.com/question/5a7abe4d847802258a06503d

资源管理

Q:两次打包,文件均未有改动,但是AssetBundle的内容会有变化,我们感觉是里面包含的脚本内容有差异。Manifest文件显示CRC和AssetFileHash有变化。文件已经上传到UWA问答官网。第一次打包为彻底打包,第二次为增量打包。

彻底打包流程如下:
1、Revert资源
2、Clear所有资源的BundleName
3、按照规则全部设置一遍BundleName
4、使用指令BuildPipeline.BuildAssetBundles(outputPath, abBuilds, BuildAssetBundleOptions.ChunkBasedCompression, EditorUserBuildSettings.activeBuildTarget);进行打包
5、生成文件对应BundleName的映射表

增量打包流程如下:
1、Revert资源
2、Clear所有资源的BundleName
3、按照映射表设置资源BundleName
4、按照规则将其余资源设置BundleName
5、使用指令BuildPipeline.BuildAssetBundles(outputPath, abBuilds, BuildAssetBundleOptions.ChunkBasedCompression, EditorUserBuildSettings.activeBuildTarget);进行打包
6、生成文件对应BundleName的映射表

A:我们发现,问题主要是我们打包之前,还对UI的Prefab做了一次预处理,会为某些控件增加脚本组件,由于这个修改后的Prefab是不上传的,每次这个操作都会去做,并且每次增加的脚本组件分配的FileId不同,导致每次文件都会有差异。这块检查时疏忽了。

另外,已经和Unity官方确认,Unity 5.x以后,BuildAssetBundleOptions.DeterministicAssetBundle是默认选项,不需要特意再去加了。

该问题题主反馈已经得到了解决,如您对该问题仍有疑问,可以转至社区进行进一步交流。

https://answer.uwa4d.com/question/5a7a8b23847802258a065038

其他

Q:我们输出的AppStore.ipa比Development.ipa大很多,想了解下为什么会这样,具体情况如下:

输出环境:

xcode:9.2
unity:5.6.3p2

数据截图:

首先,代码使用了swift+obj-c的方式,导出的时候设置了ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES为Yes。从截图能看出,主要是AppStore相比Development多了SwiftSupport目录的内容。我打出来的AppStore.ipa比Development.ipa大了接近50MB。请问各位是如何避免掉这个问题呢?

A:AppStore的包默认带了symbols,用于崩溃日志的符号化,上传后会被剥离,最终用户下载的不是这个IPA的大小。

该问题来自UWA问答社区,感谢黄晓文提供了回答,如您对该问题仍有疑问,可以转至社区进行进一步交流。

https://answer.uwa4d.com/question/5a7435b5e3b569146eeaeb4f

其他

Q:如果C#中一个函数内容使用宏定义括起,编译时成为一个空函数,但是还是有外部调用,编译时会将这种调用优化掉吗?比如传入参数是做一些函数调用然后传入返回值之类的操作,这种操作的开销应该还在,但是传入常量的话,会不会被编译优化掉?

A:编译器只会优化掉你用宏包起来,且对应的宏没有被定义的代码。
如:
if UNITY_EDITOR
Debug.Log(“hello uwa”);

else if UNITY_iOS

Debug.Log("good uwa");

endif

那 if UNITY_EDITOR内的只会在Editor下生效,打包后就会被优化了。

感谢 hejianchun提供了解答(UWA整理)


A:[Conditional]

感谢钱康来提供了解答(UWA整理)

A:根据以上各位的回复,我在IL2CPP下实测了一下宏定义和条件编译的区别,代码如下图

而编译后生成的C++代码如下:

可见,两者都会生成函数的定义,但区别在于:

(1)宏定义会把函数定义中的代码移除掉,但是调用处的参数传递不会被优化,所以无法完全消除相关的调用开销;

(2)条件编译会直接移除掉函数调用语句,不再产生相关的调用开销了,但是函数定义中的代码还是在的。

该问题来自UWA问答社区,如您对该问题仍有疑问,可以转至社区进行进一步交流。

https://answer.uwa4d.com/question/5a7a74ac2174bd258ff90f66

今天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题也许都只是冰山一角,我们早已在UWA问答网站(answer.uwa4d.com)上准备了更多的技术话题等你一起来探索和分享。欢迎热爱进步的你加入,也许你的方法恰能解别人的燃眉之急;而他山之“石”,也能攻你之“玉”。

官网:www.uwa4d.com
官方技术博客:blog.uwa4d.com
官方问答社区:answer.uwa4d.com
官方技术QQ群:465082844(仅限技术交流)

活动!UWA DAY 2018 开启报名!

近期精彩回顾
【虚幻引擎学习之路】渲染模块之光照系统
【万象更新】看完性能简报,想不优化好都难!
【厚积薄发】50次游戏性能的深度优化,得出了这五条“毒鸡汤”
UWA问答:用心解决“你”的每一个问题!

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
我35岁守寡四年,小叔子来我家借住一晚,深夜2:40,我听见他房间有动静

我35岁守寡四年,小叔子来我家借住一晚,深夜2:40,我听见他房间有动静

新时代的两性情感
2026-11-13 13:31:56
首都医科大学大一新生被电诈180万,细节曝光:先后取现、转账大量现金,交出450克黄金,骗子要求其切断与他人沟通

首都医科大学大一新生被电诈180万,细节曝光:先后取现、转账大量现金,交出450克黄金,骗子要求其切断与他人沟通

上观新闻
2026-11-12 12:24:37
布鲁可变形金刚积木车第五弹 将于 11 月 16 日发售,单盒售价 19.9 元

布鲁可变形金刚积木车第五弹 将于 11 月 16 日发售,单盒售价 19.9 元

积木圈子
2026-11-13 14:36:38
马志明正式收郭德纲为义子

马志明正式收郭德纲为义子

大风新闻
2026-11-12 13:53:05
日本主动求谈!想借深圳 APEC 安排和普京会面,但俄方划下硬门槛

日本主动求谈!想借深圳 APEC 安排和普京会面,但俄方划下硬门槛

巷北楠猫本尊
2026-11-13 18:40:41
俄罗斯要求芬兰退出北约,芬兰猛批令人愤慨且不可接受

俄罗斯要求芬兰退出北约,芬兰猛批令人愤慨且不可接受

山河路口
2026-11-14 12:26:41
7岁男孩误吞金属游戏币,妈妈选择保守观察,多次带他跑高铁站安检,借用金属探测仪扫身体;提醒:不是所有误吞异物都适合自行排出

7岁男孩误吞金属游戏币,妈妈选择保守观察,多次带他跑高铁站安检,借用金属探测仪扫身体;提醒:不是所有误吞异物都适合自行排出

大风新闻
2026-11-13 08:39:10
官宣了!凯特王妃主持圣诞大局,梅根表明态度被无视,太心酸了

官宣了!凯特王妃主持圣诞大局,梅根表明态度被无视,太心酸了

艺利森
2026-11-14 13:42:26
特朗普与伊朗高层终于醒悟:大家都上当了!

特朗普与伊朗高层终于醒悟:大家都上当了!

叶葉夜
2026-11-14 14:06:21
这就是代价!三方谈判失败后,乌恍然大悟,前总统有多明智

这就是代价!三方谈判失败后,乌恍然大悟,前总统有多明智

金戈远望
2026-11-13 22:10:03
英伟达芯片出现在上海数据中心?外交部回应

英伟达芯片出现在上海数据中心?外交部回应

看看新闻Knews
2026-11-13 19:17:10
三个儿子分完了825万拆迁补偿,我给女儿打电话,还没来得及说话,女儿:“妈,养老院选好了,让弟弟们赶紧来付钱”

三个儿子分完了825万拆迁补偿,我给女儿打电话,还没来得及说话,女儿:“妈,养老院选好了,让弟弟们赶紧来付钱”

墨染尘香
2026-08-20 11:14:52
瑞舒伐他汀立大功!研究发现:老人吃瑞舒伐,可改善4大血管问题

瑞舒伐他汀立大功!研究发现:老人吃瑞舒伐,可改善4大血管问题

刘哥谈体育
2026-11-14 14:33:50
汪明荃罗家英上门探望98岁白雪仙,刘松仁也在,看起来清减不少

汪明荃罗家英上门探望98岁白雪仙,刘松仁也在,看起来清减不少

动物奇奇怪怪
2026-11-14 09:16:53
戴笠的手下,因任务失败逃到香港,生了个儿子成国际巨星,家喻户晓

戴笠的手下,因任务失败逃到香港,生了个儿子成国际巨星,家喻户晓

旧时楼台月
2026-11-05 16:36:04
AI短剧爆款只有千分之一?5位从业者算了一笔账:绝大多数都是亏的

AI短剧爆款只有千分之一?5位从业者算了一笔账:绝大多数都是亏的

网易新闻出品
2026-11-13 15:42:11
医生:心脏比较强壮的人,通常会有6个“共同点”,希望你全有!

医生:心脏比较强壮的人,通常会有6个“共同点”,希望你全有!

小方说跑步
2026-11-13 14:30:32
16亿押金未退,欠中国1500万老百姓的钱不还,如今35岁在美国潇洒

16亿押金未退,欠中国1500万老百姓的钱不还,如今35岁在美国潇洒

荷兰豆爱健康
2026-11-14 01:31:10
“漂亮女生,安全度过高中三年会很难”,过来人一段话,别有意味

“漂亮女生,安全度过高中三年会很难”,过来人一段话,别有意味

熙熙说教
2026-11-09 15:22:10
4岁女童被妈妈抱着坐副驾驶遇车祸,安全气囊弹出撞到肚子,家人没当回事,当晚竟呕吐不止紧急送医:十二指肠已断裂,情况危急!

4岁女童被妈妈抱着坐副驾驶遇车祸,安全气囊弹出撞到肚子,家人没当回事,当晚竟呕吐不止紧急送医:十二指肠已断裂,情况危急!

都市快报橙柿互动
2026-11-14 03:10:11
2026-11-14 16:23:00
侑虎科技UWA incentive-icons
侑虎科技UWA
游戏/VR性能优化平台
1642文章数 990关注度
往期回顾 全部

头条要闻

万斯考虑退出竞选2028年美国总统

头条要闻

万斯考虑退出竞选2028年美国总统

体育要闻

坎宁安52分:肯吃苦的人就有吃不完的苦

娱乐要闻

揪心!田曦薇机场遭私生围堵摔倒

财经要闻

英伟达股价下跌 黄仁勋离职引发市场重估

科技要闻

黄仁勋一走,英伟达的中枢瘫了

汽车要闻

更豪华更好开 问界新M8细节升级见真章

态度原创

本地
健康
时尚
家居
军事航空

本地新闻

乌兰察布:以前种土豆,现在种Token

情绪真能让健康人"伤心至死"?

格纹裤,藏着秋冬搭配的分寸感

家居要闻

2026建博会(广州) 公装联探展交流活动

军事要闻

乌克兰一夜之间向俄罗斯发射近1200架无人机

无障碍浏览 进入关怀版