本篇主要涉及如何将心仪的资源打包到指定的AssetBundle资源包中。有编辑器指定和脚本指定两种。
方式一:编辑器指定
设置AssetBundle
在Project视图下选择一个资源或文件夹,即可在Inspector面板最下方找到Asset Label面板,点击菜单可以指定该资源所属的AssetBundle名称。
若要命名一个新的AssetBundle,可点击New创建一个,其他情况则可添加到已有的AssetBundle中。如果你创建了一个AssetBundle,却没有为它指定任何资源,可以使用”Remove Unused Names”,它将移除所有空的AssetBundle。
在Unity5中,AssetBundle的名称也可以代表相对路径,如图中environment/desert将创建名为desert的AssetBundle在environment目录下。注意,生成AssetBundle时并不会自动创建相应的目录,如果对应目录不存在,本次生成将失败。
导出AssetBundle
通过以上方式,我们可以设置资源打包成AssetBundle的对应关系,未设置的资源将不会包含在任何AssetBundle中。接着将以下代码添加到任意Editor目录下(如果没有可在任意地方创建一个)。
using UnityEditor;
public class CreateAssetBundles
{
[MenuItem ("Assets/Build AssetBundles")] // 在Assets菜单下拓展Build AssetBundles按钮
static void BuildAllAssetBundles () // 点击该按钮将执行本函数
{
BuildPipeline.BuildAssetBundles ("Path"); // 支持路径,如 Asset/AssetBundle
}
}
编译之后,Assets菜单(编辑器上方或右键Project下资源弹出)即多出了Build AssetBundles,点击后将在Path对应路径导出AssetBundle。你可以换成你喜欢的路径,路径起始于Assets目录,确保该路径存在。
我们使用了BuildPipeline.BuildAssetBundles接口来导出AssetBundle,这个接口的完全体如下。
BuildPipeline.BuildAssetBundles/3
public static AssetBundleManifest BuildAssetBundles(string outputPath,
BuildAssetBundleOptions assetBundleOptions, BuildTarget targetPlatform