如何将Unity 3D项目导出到WebGL并保持合理的构建大小

在这篇文章中,我将分享一些我读过的技巧,或者发现自己与保持合理的项目大小有关,以便将其导出到WebGL,并且用户没有太多等待时间将其加载到她/他的浏览器中。

我将从项目优化开始,主要与图像大小和压缩有关,所以我们开始吧!

Unity 5游戏优化
掌握Unity3D应用程序的性能优化,其技巧和技术涵盖了……的每个方面 。www.amazon.com

项目优化

  • 使用合适的图像格式
    避免使用TIFF,因为它们太大了;如果需要透明,请使用PNG;否则,请始终使用jpg,它们会保持较小的尺寸。
  • 将原始图像大小设置为项目真正需要的大小
    例如,如果您创建的图像为4096×4096,但同一张1024×1024的图像看起来相同或仅遗漏了一个最小的细节,请使用1024×1024的图像,请考虑将此更改应用于节省了多少空间所有项目的图像。 顺便说一句,仅从Unity的图像检查器的“ 最大大小”值上定义其大小是不够 ,您需要缩小项目文件夹中的原始图像资产。
  • 使用合适的图像压缩
    首先,始终将检查器上的“ 纹理类型 ”设置为Advanced ,这样我们可以看到更多的压缩选项。 选择使用RGB压缩DXT1压缩纹理,在我的情况下,这是节省更多空间并保持良好外观的选项,如果您需要透明度,请使用RGBA压缩DXT5 。 对于用户界面的Sprites,我使用RGBA32,因为图标上大量使用了渐变。
  • 为精灵使用正确的设置
    始终尽可能将没有spip贴图的子图设置为,将滤镜模式设置为pointaniso级别1 ,如果您的子图包含渐变,请尝试使用双线性甚至三线性。
  • 为您的UI精灵创建图集
    这与项目规模无关,但考虑到项目将在Web浏览器中运行,减少绘制调用的次数以使项目运行更加流畅是很有趣的。
  • 使用优化的网格
    在将选定的3d建模软件导入到Unity之前,请手动准备已优化的网格并使用适当的多边形数量,然后再将它们导入Unity,与Unity的自动Mesh压缩相比,这是最好的选择,后者可能会导致不良结果。

因此,在测试开发版本之后,终于可以导出项目以发布最终版本了,这里是与WebGL构建设置相关的技巧。

Unity 2017游戏优化–第二版:优化Unity性能的各个方面
掌握一系列性能增强的编码技术和方法,可帮助他们改善其性能 。www.amazon.com

导出到WebGL

  • 取消选中开发版本
    取消选中此选项,将使用gzip压缩来压缩和缩小生成的JavaScript。
  • 选择“最快”
    最终版本将进行一些额外的优化。
  • 检查其他设置->剥离引擎代码
    Unity不会包含项目未使用的类代码。 这样可以减小构建大小,加快代码解析速度,并使用更少的内存。 但是要小心,如果您在运行时使用AssetBundles,也许其中一些包含尚未加载的类,您可能会在应用程序上出错。 为避免此问题,您需要将带有所需类的xml代码添加到要保存的文件link.xml中,并将该文件放入Assets文件夹中:
   



  • 将发布设置->启用例外设置为无
    选中此选项仅在处于开发模式时才有用,在最终版本中,若要获得最小的版本和更好的性能,请将其设置为none。
  • 检查发布设置->数据缓存
    如果启用此功能,则您的资产将存储到浏览器的本地缓存中,因此在重新运行应用程序时无需再次下载它们。
  • 设置WebGL内存大小
    您需要测试您的项目,并查看它需要在浏览器上分配多少MB,这里没有幻数,如果该值太低,则当内容不正确时会出现“内存不足”错误不适合可用的内存。 但是,如果该值太大,则浏览器可能没有足够的可用内存来分配请求的堆大小。 您还可以在生成的index.html变量TOTAL_MEMORY上修改此值。
  • 将API兼容性级别设置为.NET 2.0子集
    如果您的项目没有使用.NET 2.0子集中的任何功能,请对其进行设置,以使构建更小。

就我而言,通过遵循这些技巧,我实现的最终WebGL构建大小为64mb,这需要小于1m.30s的初始加载时间。 使用30mb ADSL连接,而不使用AssetBundles。

如果我们考虑PC Standalone版本中的编辑器日志(我没有找到在官方文档中获取WebGL版本大小日志的方法,我是否错过了某些事情?)纹理是该项目中最重的部分,占112.3 mb ,这就是为什么减小其原始大小并使用最佳压缩非常重要。

 纹理112.3 mb 90.5% 
网眼6.5 mb 5.2%
动画8.6 kb 0.0%
声音0.0 kb 0.0%
着色器150.0 kb 0.1%
其他资产144.7 kb 0.1%
电平569.2 kb 0.4%
脚本490.1 kb 0.4%
包含的DLL 3.9 mb 3.2%
文件头71.6 kb 0.1%
完整大小124.1 mb 100.0%

由于关于最终构建大小的信息也不多,而且由于WebGL Unity仍然是一个较年轻的平台,因此通常没有太多信息,所以我不知道是否可以减少最终构建大小,如果您想评论任何新信息或与WebGL相关的个人经验,将不胜感激🙂

使用C#掌握Unity 2017游戏开发–第二版:使用C#制作专业游戏
主要功能创建具有逼真的动画和图形,粒子系统和游戏物理的专业级游戏… www.amazon.com