当前位置: 首页 > news >正文

Unity WebGL包体压缩

最近在开发webgl,踩了很多坑,先来说下包体的问题。

开发完之后发现unity将文件都合并到一个文件了,一共有接近100m。

这对网页端的体验来说是可怕的,因为玩家必须要加载完所有的文件才能进入,这样体验特别差。

于是想着有什么可以压缩首包大小,经过下面的尝试。

(一)无用资源删除

首先先把没用的资源删除,这里可以通过Editor自带的报告进行查看,路径在C:\Users\你的用户名\AppData\Local\Unity\Editor\Editor.log,文件有点大,我找到关键信息复制出来。

发现字体和unity自带的很多素材都打包进去了,unity自带的暂时不清楚怎么删除,所以我这边先不管了,如果有知道的可以告诉我下。

(二)设置项

有一些设置项会影响包体,我按照影响大小排序。

1、压缩设置

Brotli压缩最强:能缩小到20多m。

Gzip实测只能压缩几m。

这里我们设置为Brotli,虽然会牺牲解码性能,但是服务器的流量是很贵的,所以这样值得。

2、Debug Symbols嵌入

这个的作用是在网页端调试用的,如果Off的话,报错或者日志就没有明文信息,比较难调试。

这样开发阶段就Embedded,最后上线关掉。External是符号导出到外部,通过一些方式可以调试,就是比较麻烦。

这个嵌入会占用2m左右,取消后可以节省2m空间。

 

3、代码裁剪 Strip Engine Code

自动将没用的代码裁剪掉,不推荐这个,因为可能会把一些反射调用的代码给裁剪掉,默认是Low发现改成了AB包后,报错找不到代码了。所以这个我改成最小的,目前没问题。

经过测试这个包体减小的有限,顶多就一两兆,不太建议,或者自己通过link.xml管理裁剪。

(三)压缩结果 

经过一番压缩,明显从100M降到了20M了。

(四)改成AssetBundle

一般游戏开发都比较习惯用Resource.Load加载资源以及用Unity的场景管理资源,但是这样导出webgl的话,unity会自动将他们导出成4个文件:

  • .wasm
  • .data
  • loader.js
  • framework.js

这样的话,无法把游戏变成非常小的力度动态加载,用户比较要等全部加载完才进入游戏,比较影响体验。经过查找相关资料,和unity官网的文档,发现unity并没有这方面的解决方案,所以只能通过AssetBundle进行处理了。

因为传统的AssetBundle或者Unity的可寻址Addressable都比较麻烦,所以这里我借助开源插件YooAsset,快速完成AB的转换。Hello from YooAsset | YooAsset

处理完就是这样,这里我把每个UI界面都变成一个个Bundle文件,这样用户打开哪个界面就加载就行了,这样也能借助浏览器自己的缓存,自动优化,减少用户对服务器的资源请求。

可以看到下次是显示from disk cache了,这样就是从本地读取了。

 

这一套做完,网页就打开特别流畅了。

相关文章:

  • Win10环境借助DockerDesktop部署最新MySQL9.2
  • 安装 Ollama 需要哪些步骤?(windows+mac+linux+二进制+Docker)
  • 【算法篇】贪心算法
  • IntelliJ IDEA 2024.1.4版无Tomcat配置
  • 【Elasticsearch】fingerprint分析器
  • 【MySQL在Centos 7环境安装】
  • 查出 product 表中所有 detail 字段包含 xxx 的完整记录
  • C语言--动态内存管理
  • UEFI PI PEI(2. PEI Services and Table)
  • tomcat html乱码
  • DeepSeek大模型一键部署解决方案:全平台多机分布式推理与国产硬件优化异构计算私有部署
  • 【ESP32指向鼠标】——icm20948与esp32通信
  • 基于DeepSeek API和VSCode的自动化网页生成流程
  • 十大知识领域中涉及到的工具与技术(三)
  • 【IDEA】2017版本的使用
  • 快速排序
  • mars3d接入到uniapp的时候ios上所有地图的瓦片都无法加载解决方案
  • micro-app微前端集成方案
  • JavaEE架构
  • NLP Word Embeddings
  • 宣布停火后,印控克什米尔地区再次传出爆炸声
  • 邯郸一酒店办婚宴发生火灾,新郎母亲:饭没吃成酒店还要收费
  • 未来之城湖州,正在书写怎样的城市未来
  • 重庆大学通报本科生发14篇SCI论文处理结果
  • 洗冤录|县令遇豪强:黄榦处理的一起地产纠纷案
  • 逆境之上,万物生长