執筆バージョン: Unity 2019 3.3f1
執筆者/T.H.
はじめに
AssetBundle を使う上で、初心者でも簡単に出来る方法を紹介いたします。
この記事の内容
1. AssetBundle の作成方法
2. AssetBundle の読込方法
ファイルを用意しよう
今回必要なファイルは 2 種類です。
- Unity 2019 3.3f1
- 任意の Unity プロジェクト
実装してみよう
※本記事では Unity を日本語化しています。
対象の Unity プロジェクトの Assets フォルダをエクスプローラーで開き、 Editor フォルダと StreamingAssets フォルダを作成します。
Editor フォルダに AssetsBundleEditor.cs (ファイル名は任意) を作成し、下記のコードを記載、保存します。
using System; using UnityEngine; using UnityEditor; using System.Collections.Generic; public class AssetBundleEditor { static string root_path = “AssetBundles”; static string variant = “assetbundle”; [MenuItem(“アセットバンドル/ビルド(Windows64 向け)”, false)] static private void BuildAssetBundlesForWindows64() { // 他プラットフォームを対象にする場合はここを変更する(今回は Windows64 向け) UnityEditor.BuildTarget target_platform = UnityEditor.BuildTarget.StandaloneWindows64; var output_path = System.IO.Path.Combine(root_path, target_platform.ToString()); if (System.IO.Directory.Exists(output_path) == false) { System.IO.Directory.CreateDirectory(output_path); } var asset_bundle_build_list = new List<UnityEditor.AssetBundleBuild>(); foreach (string asset_bundle_name in UnityEditor.AssetDatabase.GetAllAssetBundleNames()) { var builder = new AssetBundleBuild(); builder.assetBundleName = asset_bundle_name; builder.assetNames = UnityEditor.AssetDatabase.GetAssetPathsFromAssetBundle(builder.assetBundleName); builder.assetBundleVariant = variant; asset_bundle_build_list.Add(builder); } if (asset_bundle_build_list.Count > 0) { UnityEditor.BuildPipeline.BuildAssetBundles( output_path, asset_bundle_build_list.ToArray(), UnityEditor.BuildAssetBundleOptions.ChunkBasedCompression, target_platform ); } } } |
(上記コードは Windows 向けなので、他プラットフォームを対象にする場合は target_platform を変更して下さい)
Unity を起動し、対象のプロジェクトを開きます。
(既に開いている場合はリフレッシュをするか、再起動して下さい)
『アセットバンドル』が追加されている事を確認します。
アセットバンドル化したいアセットを選択します。
(本記事では test.json を使用します)
アセットラベルからアセットバンドル名を設定します。
(左側がアセットバンドル名)
今回は TestBundle01 とします。
アセットバンドル → ビルド(Windows64 向け)を選択し、アセットバンドル化します。
プロジェクトフォルダ内の AssetBundles フォルダに出力されます。
(今回であれば [プロジェクトフォルダ]\AssetBundles\StandaloneWindows64 の中)
AssetBundles フォルダを StreamingAssets フォルダ内に配置します。
起動
アセットバンドルをロードします。
string asset_bundle_path = Application.streamingAssetsPath + “/AssetBundles/StandaloneWindows64/testbundle01.assetbundle”; AssetBundle asset_bundle = AssetBundle.LoadFromFile(asset_bundle_path); |
アセット (test.json) をロードします。
(今回は json なので TextAsset にした後、文字列を取得しています)
TextAsset test_text_asset = assetBundle.LoadAsset<TextAsset>(“test”);string test_json_string = test_text_asset.text; |
まとめ
アセットバンドルの実装は大変というイメージがありますが、手元で動かせるシンプルなコードが作成出来れば、それを足がかりに理解が進むと思います。Resources クラスを使わない選択肢として検討してみて下さい。