BuildPipeline.BuildAssetBundle 编译资源包

static function BuildAssetBundle (mainAsset : Object, assets : Object[], pathName : string, options : BuildAssetBundleOptions = BuildAssetBundleOptions.CollectDependencies | BuildAssetBundleOptions.CompleteAssets, targetPlatform : 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);
				}

			}
		}
	}
}
Page last updated: 2011-5-8