unity 微信|抖音小游戏包体优化,首包优化

发布时间:2026/8/27 10:38:55
unity 微信|抖音小游戏包体优化,首包优化 1.概述OK 今天跟大家聊一下这个首包优化很多人做优化都是东改一下、西调一下没有目标看似优化了一堆实际没有优化对地方又或者是从网上查一下然后根据网上给出的优化方法进行一些优化但是根本的问题还是没解决。今天咱们就一起解决这个性能问题。本文以微信小游戏为例其实无论是小游戏包还是android包又或者其他包体原理都是一样的。2.为什么要优化首包做优化之前咱们要知道为什么要优化首包这个就比较好理解了微信|抖音 小游戏相比于传统移动端游戏能让咱们点击即玩更快的进游戏以为着更高的转化率这对买量很有帮助。在看包里有什么前咱们可以先看微信小游戏的启动流程图这个是官方文档里面的启动流程图从这个启动流程来看他分为三部分咱们进行包体优化主要是针对第一步我们也可以看到官方给我们的建议是代码量精简CodeSize控制在4M以内首包资源包简化DataSize控制在5m以内。从这个流程来看我们优化代码包资源包能减少下载时间以及编译的时间从而减少游戏的启动时间。3.怎么优化首包代码想要缩小微信小游戏代码包首先我们得搞懂一件事wasm.br 这个代码包里面到底装了什么整个代码包由三大部分构成第一块是我们自己写的业务逻辑代码第二块是庞大的 Unity 引擎底层代码第三部分是 Spine、网络库这类第三方插件库。最终打包输出大家拿到的就是压缩后的wasm.br文件。很多人有个疑问我只能看到最终的 wasm 文件我怎么知道里面包含了哪些 C# 代码具体的哪些库被打进来包里了咱们光看这个最终的wasm文件是看不出来的所以我们只能往前找看看是哪些文件打进包里了想搞明白这点我们就要完整梳理 Unity WebGL 的打包编译链路。我们从头走一遍流程第一步我们写的 C# 代码先编译成 IL 中间语言第二步引擎执行代码裁剪Stripping根据使用情况剔除没有调用的代码得到剪裁后的 IL 文件一堆dll文件✅重点来了代码包瘦身最关键的观测节点就在这一步我们可以导出、对比裁剪后的 IL一眼就能看出哪些多余类、接口没有被裁掉提前优化而不是等到最后编译完 wasm 再返工。第三步IL2CPP 工具把裁剪完成的 IL转译成标准 C 源码一堆Cpp文件第四步再交给 Emscripten 编译器把 C 编译成 WebAssembly也就是最终的 wasm 文件最后压缩成 wasm.br。简单梳理整条链路C# 源码 → IL → 【裁剪 IL优化观测关键点】 → C 中间代码 → Emscripten 编译 → wasm → wasm.br所以大家记住不要盯着最终 wasm 去猜代码冗余。去猜哪一个插件有没有用到过那样太笨重了往往只是删除了一些无关紧要的代码一定要利用好IL 裁剪阶段的中间产物dll文件根据这些dll来决定去优化哪一个去删减哪一个。现在我们已经将优化wasm转换为了优化 dll文件同时这些dll 也给了我们指引告诉了我们他们叫什么我们能根据这些名字进行优化即可。举个例子大家肯定是把优化重心放到这些大的dll进行优化优化的方法无外乎 删除和删减 删除无用的库以及对一些重度的库进行删减1unity VisualScripting.Core 这个是unity可视化脚本的核心代码库如果我们没有用到是不是可以把这个删掉2也可以看到Newtonsoft.Json.dll 和 LitJson.dll 两个json序列化的库 那么我们是不是可以删一个3对于一些比较大的库 也就是Assembly-CSharp.dll 或者mscorlib.dll 我们怎么对他进行删减呢我们可以使用dnSpy反编译来查看 这个库里到底用到哪些方法函数来帮助我们进行删减这就是主要优化方法同时还有很多官方给出的优化方法也同样很有效需要大家同时进行优化打包方式从更快 改成压缩的更强开启代码剪裁官方推荐 等级改为最高开启br压缩开启代码分包4. 怎么优化首包资源上面我们通过中间产物dll来确认首包代码包里面有什么那么首包资源包怎么进行问题转化呢咱们可以思考一下同一个项目同样的资源可以打出android包可以打出微信小游戏包在这个项目中场景资源、Prefab 、音效、动画等等这些文件资源依赖关系完全一致那么我们就可以将我们现在的问题 是不是就可以转变为分析如果降低Android包的资源大小。那么咱们为什么要将问题转换为android包呢因为咱们有AssetStudio 这个好用的工具他能查看android包里面的资源到底有什么用这个工具打开解压后android包目录下的 assets\bin\Data 目录可以看到里面的有的各种各样的资源可以根据这些内容来定位首包资源包有什么举个例子我们可以看一下 这些资源哪些资源是首包用不到的可以拆分出来首包资源与后续资源同时我们可以看到很多资源其实来自Resources目录可以清理 Resources 目录中的无用资源项目中的字体非常大 可以单独拆分出来一个首包字体这样我们的问题就具象化将优化首包资源转换为优化某个或某些具体的资源我们可以针对这些需要优化的资源制定专门的优化策略。5. 更方便的首包查看工具问题来了有些项目无法打出来android包怎么办以及上述介绍的两种方式都不太能方便的查看首包内容那么有什么方式能简化这个流程呢下面是一个插件首包资源查看优化工具Eazy Build Size Optimization该插件通过Editor.log这个文件会记录打包全过程日志从日志中来过滤首包的资源内容来查看首包资源包的内容通过推荐的dll目录来查看首包代码包的内容。这样就避免了打Android包以及一个工具搞定首包优化。该插件链接首包资源查看优化工具Eazy Build Size Optimization | 实用工具 工具 | Unity 中国资源商店6. 总结解决优化问题时不要盲目优化要做到有明确的指标正确的方法趁手的工具。