BuildPipeline.BuildAssetBundleExplicitAssetNames 编译资源包带有资源名

static function BuildAssetBundleExplicitAssetNames (assets : Object[], assetNames : string[],pathName : string, options : BuildAssetBundleOptions = BuildAssetBundleOptions.CollectDependencies | BuildAssetBundleOptions.CompleteAssets, targetPlatform : BuildTarget = BuildTarget.WebPlayer) : bool

Description描述

Builds an asset bundle, with custom names for the assets (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. In the assetNames parameter, supply an array of strings of the same size as the number of assets. These will be used as asset names, which you can then pass to AssetBundle.Load to load a specific asset. Use BuildAssetBundle to just use the asset's path names instead. 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.

创建一个压缩的unity3d文件,包含资源的集合。资源包可以包含任何项目文件中的资源。在assetNames参数,然后可以传递给AssetBundle.Load加载一个特定的资源。使用BuildAssetBundle只使用资源的路径名替代。压缩的资源包文件将保持在pathName。options允许您自动包括依赖关系或总是包含完整的资源,而不只是准确引用的对象。

参见:BuildAssetBundle, 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