构建资源包        

有三种类函数可用于构建资源包 (AssetBundles):

  • BuildPipeline.BuildAssetBundle 允许您构建任意资源类型的资源包 (AssetBundles)。

  • 如需在数据可用时只添加场景进行流处理和加载时,可使用BuildPipeline.BuildStreamedSceneAssetBundle。

  • BuildPipeline.BuildAssetBundleExplicitAssetNames 与 BuildPipeline.BuildAssetBundle 作用相同,但有一个额外参数可指定每个对象的自定义字符串标识符(名称)。

资源包 (AssetBundle) 构建示例

我们使用编辑器脚本构建资源包。BuildPipeline.BuildAssetBundle 脚本文档中有相关基本示例。

根据此示例,将上述链接中的脚本复制并粘贴至新 C# 脚本,并以 ExportAssetBundles 命名。此脚本应位于名为编辑器 (Editor) 的文件夹中,以便其可在Unity 编辑器中运行。

现在在资源 (Assets) 菜单中,应可看见两个新菜单选项。

  1. 构建选择的资源包 ? 跟踪相关性。这会将当前对象及其所有相关性导入资源包。例如,如果您有一个包含多个分层结构的预设,则该预设将以递归方式将所有子对象和组件添加至资源包。

  2. 构建选择的资源包 ? 不跟踪相关性。此方法与上述方法相反,将只添加您选定的单个资源。

在此示例中,您应新建预设。首先,可通过转至游戏对象 (GameObject) -> 新建 (Create Other) -> 立方体 (Cube) 在层级视图 (Hierarchy View) 中新建立方体 (Cube)。然后将立方体 (Cube) 从层级视图 (Hierarchy View) 拖放至工程视图 (Project View),这将创建该对象的预设。

然后,应在工程窗口右击立方体 (Cube) 预设并依次选择 构建选择的资源包 (Build AssetBundle From Selection) - 跟踪相关性 (Track dependencies)。 此时将显示一个窗口提示您保存打包的资源。如果新建一个名为“资源包 (AssetBundles)”的文件夹并将立方体另存为 Cube.unity3d,现在,工程窗口将以下图形式显示。

此时,可将资源包 (AssetBundle) Cube.unity3d 移至本地存储的其他位置,或将其上传至所选服务器。

示例:构建资源包 (Asset Bundle) 时如何更改资源的属性

可在调用 BuildPipeline.BuildAssetBundle 前使用 AssetDatabase.ImportAsset 强制重新导入资源,然后使用 AssetPostprocessor.OnPreprocessTexture 设置所需属性。以下示例将介绍构建资源包 (Asset Bundle) 时如何设置不同的纹理压缩率。

还可使用 AssetDatabase.ImportAssetOptions 控制资源导入方式。

在生产环境中构建资源包 (AssetBundles)

从上述示例可看出,首次使用资源包 (AssetBundles) 时,完全可手动构建资源包。但随着工程逐渐增大和资源数量逐渐增加,手动完成此流程则费时费力。一个更好的办法是编写函数构建一个工程的所有资源包 (AssetBundles)。例如,可使用文本文件将资源 (Asset) 文件映射到资源包 (AssetBundle) 文件。


,