(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

アセットのアセットバンドル名をプログラムから設定する方法【Unity】【AssetBundle】【エディタ拡張】


このエントリーをはてなブックマークに追加


この記事でのバージョン
Unity 2017.1.1f1


はじめに

AssetBundleを生成する時にはアセットのアセットバンドル名を設定する必要があります。


f:id:kan_kikuchi:20171012070105j:plain


Inspector上から手動で設定する事も可能ですが、

量が増えてると面倒だし、なにより間違いが起きる可能性もあるので自動化したいですよね?


今回はそんな時に使える、アセットのアセットバンドル名をプログラムから設定する方法のご紹介です!


assetBundleName

アセットバンドル名をプログラムから設定する際、

対象のアセットをそのままロードしても設定は出来ません。

ではどうするのかと言えばAssetImporterを使います。



例えば以下のような構成で、


f:id:kan_kikuchi:20171013165039j:plain


Playerというprefabに、Playerというアセットバンドル名を付けたい時は以下のような感じです。

//AssetImporter取得。パスはAssetsから、拡張子も付ける(ディレクトリは拡張子なし)
AssetImporter importer = AssetImporter.GetAtPath("Assets/Prefabs/Player.prefab");

//アセットバンドル名を設定(Noneにしたい場合は""にする)
importer.assetBundleName = "Player";

//設定を保存
importer.SaveAndReimport();

f:id:kan_kikuchi:20171013165113j:plain


アセットだけでなく、ディレクトリも同じ方法でアセットバンドル名を設定出来ます。

ただし、アセットバンドル名に大文字は使えないので注意が必要です。


なお、アセットのパスが知りたい時は、AssetDatabase.GetAssetPathを使います。