Unity3D爬坑手记——Prefab篇2

来源:互联网 发布:linux ip命令查看ip 编辑:程序博客网 时间:2024/06/06 09:49

之前感叹了Prefab的强大,以及创建预设体时的小坑一个,这里还有一个坑同样需要注意。

依赖包的设置。这里必须要说一下,从网上查到的资料来说,也就是能查到

BuildPipeline.PushAssetDependencies();

BuildPipeline.PopAssetDependencies();

这两句代码的嵌套使用,其它的或多或少会提及,但是不及自己使用时的心得体会。这里就说一下场景资源打成assetbundle时的注意事项,

详细代码就不方便写了,只说一下具体的思路。

1、我们不可能在项目中手动的规定打包文件的具体名称,和具体的依赖包是哪个,但是我们可以通过代码来完成。

2、收集好要打成的预设体和依赖项。

3、打包过程要注意

BuildPipeline.PushAssetDependencies();

BuildPipeline.PopAssetDependencies();

的嵌套问题。尤其想要做到预设之间不依赖的情况。


关于3可以详细说一下,这里踩过雷,也实验过。想要做到只对类文件依赖的情况,毕竟我们不可能去单独针对某个依赖的文件,再去生成依赖它的assetbundle。

举个已经证明的例子,如果目前有1~15号图片以及a~z个物体,这些物体使用到的图片各个不同,有的是2张以上,这时候要怎么打成对应的assetbundle呢?

经过验证的例子

BuildPipeline.PushAssetDependencies();

for(int i = 0; i < 15; i++)

{

1~15的具体打包代码

}

for (int j = 0; j < 26; j++)

{

BuildPipeline.PushAssetDependencies();

a~z的具体打包代码

BuildPipeline.PopAssetDependencies();

}

BuildPipeline.PopAssetDependencies();


这样打出来的assetbundle中a~z之间除了有对图片的单独依赖外,其它没有任何依赖关系,也就是说,a~z的Assetbundle中会出现重复资源,如果不想出现,只要把

BuildPipeline.PushAssetDependencies();

BuildPipeline.PopAssetDependencies();

从a~z的打包代码所在的for循环中拿出来就可以了。

后遗症就是需要自己维护好a~z之间所有的依赖关系。这个就只能看各位的本事了。





0 0
原创粉丝点击