outputPath | アセットバンドルの出力パス |
assetBundleOptions | アセットバンドルのビルドオプション |
targetPlatform | ビルド時の対象プラットフォームを選択します |
エディターで指定されたすべてのアセットバンドルを作成します。
この関数は、名前を付けたアセットバンドルに含めるためのマークをアセットにつけた後で、アセットバンドルをビルドするために使います(詳細は、マニュアルの building asset bundles ページを見てください)。この関数は、エディターで指定したバンドルをビルドし、ビルドが成功した場合は true を、そうでない場合には false を返します。加えて、ターゲットフォルダーのパスが間違っている等、よくある失敗原因を提示するために、エラーメッセージが表示されます。\noutputPath
はプロジェクトフォルダー内にあるフォルダーのパスで、ここにバンドルが保存されます (例えば Assets/MyBundleFolder)。フォルダーは自動的には作成されず、存在しない場合には関数は失敗します。
オプションの assetBundleOptions
は、 targetPlatform
が、配信するターゲット(スタンドアローンやモバイルなど)を選択するときに、バンドルをビルドする方法を編集します。スタンドアローンプラットホーム向けのバンドルビルドは、モバイル向けのビルドとは互換性がないので、異なるバージョンのバンドルを作成する必要があります。プラットホーム間でのバンドルの互換性については、マニュアルの Asset Bundle FAQ を参照してください。
using UnityEngine; using UnityEditor;
public class BuildAssetBundlesExample : MonoBehaviour { [MenuItem( "Example/Build Asset Bundles" )] static void BuildABs( ) { // Put the bundles in a folder called "ABs" within the Assets folder. BuildPipeline.BuildAssetBundles( "Assets/ABs", BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows ); } }
BuildAssetBundles は、アセットバンドルをビルドする際、アクティブなビルドターゲットを targetPlatform
で指定したものに変更しますが、終了後には元のアクティブなビルドターゲットに戻します。大きなプロジェクトや連続でアセットバンドルをビルドする際には、ビルドターゲットの切り替えは遅くなります。その場合、むしろ元のビルドターゲットに戻したくないのであれば BuildAssetBundles を呼ぶ前に targetPlatform
を切り替える事ができます。例えば:
EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTarget.Android); BuildPipeline.BuildAssetBundles("Assets/AssetBundles", BuildAssetBundleOptions.None, BuildTarget.Android);
EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTarget.Android); BuildPipeline.BuildAssetBundles("Assets/AssetBundles", BuildAssetBundleOptions.None, BuildTarget.Android);
See Also: AssetBundle.
outputPath | アセットバンドルの出力パス |
builds | アセットバンドルのビルドマップ |
assetBundleOptions | アセットバンドルのビルドオプション |
targetPlatform | ビルド時の対象プラットフォームを選択します |
ビルドマップからアセットバンドルを作成します。
この関数では、エディターで設定した詳細でなく、ビルドマップを使用してバンドル名とコンテンツを指定することができます。マップは単純に、AssetBundleBuild オブジェクトの配列で、それぞれにバンドル名と指定されたバンドルに加えるアセットファイル名のリストが含まれています。
using UnityEngine; using UnityEditor;
public class BuildAssetBundlesBuildMapExample : MonoBehaviour { [MenuItem( "Example/Build Asset Bundles Using BuildMap" )] static void BuildMapABs( ) { // Create the array of bundle build details. AssetBundleBuild[] buildMap = new AssetBundleBuild[2];
buildMap[0].assetBundleName = "enemybundle";
string[] enemyAssets = new string[2]; enemyAssets[0] = "Assets/Textures/char_enemy_alienShip.jpg"; enemyAssets[1] = "Assets/Textures/char_enemy_alienShip-damaged.jpg";
buildMap[0].assetNames = enemyAssets; buildMap[1].assetBundleName = "herobundle";
string[] heroAssets = new string[1]; heroAssets[0] = "char_hero_beanMan"; buildMap[1].assetNames = heroAssets;
BuildPipeline.BuildAssetBundles( "Assets/ABs", buildMap, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows ); } }
See Also: AssetBundleBuild.