1、在上一篇“AssetBundle打包中实用函数与实用MenuItem”中介绍了打包一个物体的函数Build_AssetBundle_Collection(),这个函数使用的是三个形参的public staticAssetBundleManifestBuildAssetBundles(stringoutputPath,BuildAssetBundleOptionsassetBundleOptions,BuildTargettargetPlatform);下面介绍一下四参使用方法public staticAssetBundleManifestBuildAssetBundles(stringoutputPath, AssetBundleBuild[]builds,BuildAssetBundleOptionsassetBundleOptions,BuildTargettargetPlatform);具体脚本参考下图。
2、四参的方式与三参打包结果是一样的。但是四参设置了AssetBundle的Variant之后,会报错Variant folder path cannot be empty.指Variant文件夹路径不能为空,报错后,发布结果测试可用。但是这个问题出现的原因尚不知。如果不设置Variant,发布无异常buildMap[0].assetBundleVariant = "unity3d";
3、将一个文件夹下所有子文件夹内的资源全部打包的函数:Build_AssetBundle_Build_FileAllChild();详细代码请看图片内容。这个打包的是Assets/DLJ_Unity3D文件夹中所有子文件夹内的对象。从图片能够看出输出的AssetBundle资源与打包对象的存储文件夹相同。
4、对比一下两个文件夹打包出来的资源,是否能看出问题?右咐搭趔涮边的文件夹内完全包含了左边的打包文件。这是为什么呢?应该怎么解决呢,这个结果肯定不是我们想要的。唁昼囫缍这里提供解决办法,各种原由请读者自行体会,在前面的两篇文章中说过很多次了(请参考“Unity3D新版AssetBundle的关键API和注意事项”“AssetBundle打包中实用函数与实用MenuItem”)解决办法:在Build_AssetBundle_Build_FileAllChild()函数的BuildPipeline.BuildAssetBundles语句之上添加ClearAssetBundlesName();这个函数的具体功能与脚本请查阅“AssetBundle打包中实用函数与实用MenuItem”
5、加载AssetBundle的函数:LoadAssetBundle(string _strPath);具体代码详见下图。新旧版本的加载函数没有发生机制上的变化,但是函数名发生变化:4.X(旧版):Load:从资源包中加载指定的资源LoadAll:加载当前资源包中所有的资源LoadAsync:从资源包中异步加载资源5.X(新版):LoadAsset:从资源包中加载指定的资源LoadAllAsset:加载当前资源包中所有的资源LoadAssetAsync:从资源包中异步加载资源关于url的路径,可以使用在“AssetBundle打包中实用函数与实用MenuItem”介绍的函数转换\和\\