unity3D热更新——Assetbundle单个Prefab与多个Prefab整体打包大小测试

unity5.x里面的AssetBundle打包相比之前unity4.x的打包简单了许多,Unity4.X中打包的时候需要自己去管理依赖关系,而unity5.x之后则自动帮你处理好了依赖关系,但是还有一些需要注意的问题,就是当多个预制物都共用一些资源,这时你对这些预制物打包时,unity会把每个包中预制物引用到的资源都打进包中,如果两个包中都引用到了相同的资源,uniy会把这些资源分别打进两个包中,这无疑就增加了包体的大小。

我们可以来做个测试,创建两个image,测试UI--Image_1附上图片1,测试UI--Image_2附上图片2,然后将他们分别打包出来看下大小。

打包出来后一个6K一个8K,然后我们在这两个预制物下面都创建一个image,并附上图片1 再打包出来看看


打包出来后 测试UI--Image_1.unity3d 还是6K 测试UI--Image_2.unity3d  有10K,

通过上面的测试可以得出一些结论:当一个包中引用了一次跟引用了多次相同的资源,包体的大小是一样的,包体的大小不会因为引用相同资源的次数而改变或者很小可以忽略不计。

如果两个包都引用了相同资源,会将资源分别都打入到两个包中。

接下来我们再来测试下,分别把两个没有相同引用资源的预制物和两个有相同引用的预制物打到一个包中试下。

先把没有付相同图片1之前的两个预制物打到一个包中


打出来的包有10K,跟之前分别打包6K和8K加在一起少了4K,也就是说除了图片资源,还有一些其他额外的东西会占用一部分包体大小。

然后我们再把都付了相同图片1之后的两个预制物打到一个包中,如果按照我们之前得出的结论,包体的大小不会因为引用相同资源的次数而改变,UI--Image_1 引用了两次图片1,UI--Image_2引用了一次图片2和一次图片1,那打出来的包就应该跟上面一样也是10K了


果然跟预测的一样

所以我们在打包的时候如果有相同资源引用的预制物最好都打到一个包中。



猜你喜欢

转载自blog.csdn.net/qq_36512517/article/details/80299260
今日推荐