系统相关
首页 > 系统相关> > UnityWebGL 场景资源、预制体资源、分配内存大小、压缩格式与打包的包体大小关系(实测)。

UnityWebGL 场景资源、预制体资源、分配内存大小、压缩格式与打包的包体大小关系(实测)。

作者:互联网

前言

1,网上的信息大多比较零散,我只知道这些内容是有关系的,并不清楚具体的差别大小。所以我就用最笨的方法进行了很多次打包,把各种情况做一个对比,一次搞清楚。那样就能知道到底从哪个方向优化比较好。

2,因为打包出的webgl文件中,主要数据是与buid文件夹中的“项目.data..unityweb“的文件相关的,所以以下主要对比此文件的大小变化

3,本文主要对这两个地方进行改动

一,空场景的数据

场景无资源

无文件资源

内存大小 压缩方式 .unitywebgl大小
256 Gzip 660k

 

 

 

,导入模型,引用预制体,放在Resources中的几种打包数据

导入一个20M的模型,打包

内存大小 压缩方式 .unitywebgl大小
256 Gzip 660kb

 

 

 

没变化,那我在新建一个脚本,引用一下该预制体

然后,文件大小增加了2113k

好吧我证明了,unity只会打包有引用的东西。。

在进一步测试,把预制体放进Resources文件夹呢。

取消代码引用,然后单纯的把预制体放在Resources文件夹,打包

在Resources中哪怕不引用,都会一块打包出来,而且比在别的文件夹还要大一些

三,改变内存大小,和压缩方式

首先改变内容大小,256*4,看一看分配内存对文件大小有木有关系

以下为引用一个预制体

内存大小 压缩方式 .unitywebgl大小
1024 Gzip 2773kb

 

 

 

并没有变化,接下来把内存大小改成256,压缩方式改变一下

内存大小 压缩方式 .unitywebgl大小
256 Brotli 1846kb

 

 

 

又压缩900kb,而模型也就2m左右,又减少了接近一半的大小。

代价就是,打包时长延长。

这个地方需要注意的是,这个格式的打包优化比例,对脚本,图片资源,以及其他资源是不同的。并不全是接近一半

四,场景资源与隐藏的场景资源

脚本删除后,实例一个预制体到场景,打包。

内存大小 压缩方式 .unitywebgl大小
256 Gzip 2773kb

 

 

 

场景中存放的模型会被打包出来。

然后,把场景中该物体隐藏,打包。

隐藏也是不行滴,所以最好的办法就是不要放任何东西。

五,Resources存在预制体且场景中有该预制体实例。

内存大小 压缩方式 .unitywebgl大小
256 Gzip 2901kb

 

 

 

让人欣慰的是,还好不是1+1=2的关系,单个Resources预制体2857kb,实例一个2901kb。

那么不如实例两个?

六,打包成AssetsBundle文件

把预制体放在Resources外边,打包成AssetsBundle看有什么惊喜。

这个文件大小无变化

然后资源打包成

总计660+963=1723kb.

七,结语

最优解已经出来了,场景不要放资源,打包成ab包加载对象,这就是最小包体的优化方向。

当然这是主要的优化,只于其它的细节,比如只打包一个场景出去,剩余的场景用ab包加载,这些细节的优化还是很多的,就不一一列举了。。。

标签:场景,UnityWebGL,Resources,内存大小,分配内存,包体,预制,256,打包
来源: https://blog.csdn.net/qq_41886896/article/details/93199543