Blog

[Unity] 初心者でも簡単なAssetBundle の使い方

執筆バージョン: Unity 2019 3.3f1

執筆者/T.H.

はじめに

AssetBundle を使う上で、初心者でも簡単に出来る方法を紹介いたします。

この記事の内容

1. AssetBundle の作成方法

2. AssetBundle の読込方法

ファイルを用意しよう

今回必要なファイルは 2 種類です。

  1. Unity 2019 3.3f1
  2. 任意の 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 クラスを使わない選択肢として検討してみて下さい。

関連記事

ブログ一覧へ戻る