BuildPipeline.BuildAssetBundle 编译资源包

本文详细介绍了Unity中如何使用BuildPipeline.BuildAssetBundle方法生成资源包。该方法支持指定主资源、附加资源、保存路径及选项等参数,并通过一个C#示例展示了如何从项目视图中的选定文件夹构建资源包。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

static function BuildAssetBundle (mainAsset : Objectassets : Object[], pathName : string, options : BuildAssetBundleOptions = BuildAssetBundleOptions.CollectDependencies | BuildAssetBundleOptions.CompleteAssetstargetPlatform : BuildTarget = BuildTarget.WebPlayer) : bool

Description描述

Builds an asset bundle (Unity Pro only).

生成一个资源包(仅用于Unity Pro)。

Creates a compressed unity3d file that contains a collection of assets. AssetBundles can contain any asset found in the project folder. This lets you stream resource data of any type, fully setup prefabs, textures, meshes, animations, any type of asset shown in the project window. mainAsset lets you specify a specific object that can be conveniently retrieved using AssetBundle.mainAsset. The compressed asset bundle file will be saved at pathName. options allows you to automatically include dependencies or always include complete assets instead of just the exact referenced objects. All paths are relative to the project folder. Like: "Assets/MyTextures/hello.png"

创建一个压缩的unity3d文件,包含资源的集合。资源包可以包含任何项目文件中的资源。这可以让你流任何类型的资源数据,全部的预置设置,纹理,网格,动画等显示在项目窗口中的任意类型。mainAsset让你指定一个特定对象,可以方便的使用AssetBundle.mainAsset检索。压缩的资源包文件将保持在pathName。options允许您自动包括依赖关系或总是包含完整的资源,而不只是准确引用的对象。所有路径相对于项目文件夹。像: "Assets/MyTextures/hello.png"

参见: AssetBundle 类, WWW.assetBundle.


// C# Example
// Builds an asset bundle from the selected folder in the project view.
// Bare in mind that this script doesnt track dependencies nor is recursive
//在项目视图从选择的文件夹生成资源包
//记住,这个脚本不跟踪依赖关系,也不是递归
using UnityEngine;
using UnityEditor;
using System.IO;

public class BuildAssetBundlesFromDirectory {
	[@MenuItem("Asset/Build AssetBundles From Directory of Files")]
	static void ExportAssetBundles () {
		// Get the selected directory
		//获取选择的目录
		string path = AssetDatabase.GetAssetPath(Selection.activeObject);
		Debug.Log("Selected Folder: " + path);
		if (path.Length != 0) {
			path = path.Replace("Assets/", "");
			string [] fileEntries = Directory.GetFiles(Application.dataPath+"/"+path);
			foreach(string fileName in fileEntries) {
				string filePath = fileName.Replace("", "/");
				int index = filePath.LastIndexOf("/");
				filePath = filePath.Substring(index);
				Debug.Log(filePath);
				string localPath = "Assets/" + path;
				if (index > 0)
				localPath += filePath;
				Object t = AssetDatabase.LoadMainAssetAtPath(localPath);
				if (t != null) {
					Debug.Log(t.name);
					string bundlePath = "Assets/" + path + "/" + t.name + ".unity3d";
					Debug.Log("Building bundle at: " + bundlePath);
					// Build the resource file from the active selection.
					//从激活的选择编译资源文件
					BuildPipeline.BuildAssetBundle
					(t, null, bundlePath, BuildAssetBundleOptions.CompleteAssets);
				}

			}
		}
	}
}


转自:http://game.ceeger.com/Script/BuildPipeline/BuildPipeline.BuildAssetBundle.html
buildpipeline.buildassetbundle 是 Unity 引擎中的一个方法,用于将场景或资源打包成 AssetBundle,以便在游戏运行时动态加载。 具体用法如下: ```csharp public static AssetBundleBuild[] CreateAssetBundleBuilds() { // 创建一个包含需要打包的资源信息的 AssetBundleBuild 数组 AssetBundleBuild[] buildMap = new AssetBundleBuild[1]; buildMap[0].assetBundleName = "myassetbundle"; buildMap[0].assetNames = new string[] { "Assets/MyScene.unity", "Assets/Prefabs/MyPrefab.prefab" }; return buildMap; } public static void BuildAssetBundles() { // 获取打包输出目录 string outputPath = "Assets/AssetBundles"; // 打包配置信息 BuildAssetBundleOptions buildOptions = BuildAssetBundleOptions.None; BuildTarget buildTarget = BuildTarget.StandaloneWindows; // 创建打包目录 if (!Directory.Exists(outputPath)) { Directory.CreateDirectory(outputPath); } // 执行打包 AssetBundleManifest manifest = BuildPipeline.BuildAssetBundles(outputPath, CreateAssetBundleBuilds(), buildOptions, buildTarget); // 打包完成后的操作 if (manifest != null) { Debug.Log("AssetBundle 打包完成!"); } else { Debug.LogError("AssetBundle 打包失败!"); } } ``` 以上代码会将场景 "Assets/MyScene.unity" 和预制件 "Assets/Prefabs/MyPrefab.prefab" 打包成一个名为 "myassetbundle" 的 AssetBundle,并输出到 "Assets/AssetBundles" 目录下。 需要注意的是,如果资源的路径中包含中文或特殊字符,在打包时可能会出现问题。因此,最好将资源放在英文命名的文件夹中,并使用相对路径来指定资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值