コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】エディタ上でアセットバンドルの構築ルールを設定できる「EasyAssetBundle」紹介

はじめに

https://github.com/charcolle/EasyAssetBundle

「EasyAssetBundle」を Unity プロジェクトに導入することで
エディタ上でアセットバンドルの構築ルールを設定できるようになります

目次

クイックスタート

この記事では、「EasyAssetBundle」を使用して
アセットバンドルの作成から読み込みまでを行う手順を紹介していきます

構築ルールの設定

f:id:baba_s:20180415170333p:plain

Unity メニューの「Window>EasyAssetBundle」を選択すると、

f:id:baba_s:20180415170348p:plain

アセットバンドルの構築ルールを設定できるウィンドウが表示されます

f:id:baba_s:20180415170354p:plain

「+」ボタンを押して、

f:id:baba_s:20180415175902p:plain

「Create」ボタンを押します

f:id:baba_s:20180415170615p:plain

すると、アセットバンドルの構築ルールを管理する ScriptableObject が作成され、

f:id:baba_s:20180415170410p:plain

エディタ上でルールを設定できるようになるので、

f:id:baba_s:20180415170727p:plain

各項目を設定していきます

Basic Settings

f:id:baba_s:20180415171106p:plain

項目 内容
Root Path of Build AssetBundle アセットバンドルにするアセットのルートフォルダのパス
AssetBundle Build Options アセットバンドルのビルドオプション
詳細はこちら
Build Platform ビルド対象のプラットフォーム

Export Setting

f:id:baba_s:20180415171121p:plain

項目 内容
AssetBundle CachePath アセットバンドルを作成日時ごとに分けて
保存しておくフォルダのパス
Export with Manifest Manifest ファイルを出力するかどうか
Export AssetBundle Path アセットバンドルの出力先のフォルダのパス
Export Type ビルド時に出力先のフォルダ構造を維持するかどうか

AssetBundleList Setting

f:id:baba_s:20180415171501p:plain

項目 内容
Use AssetBundleList アセットバンドルリストを使用するかどうか
AssetBundleList SavePath アセットバンドルリストの保存先のフォルダのパス

アセットのリストの読み込み

f:id:baba_s:20180415171731p:plain

Basic Settings の設定が完了した後に「Load Assets」ボタンを押すと、

f:id:baba_s:20180415171827p:plain

アセットバンドル化する対象のアセットの一覧が表示されます

f:id:baba_s:20180415173023p:plain

フォルダ単位でアセットバンドル化する時は上記のように、

f:id:baba_s:20180415173035p:plain

ファイル単位でアセットバンドル化する時はこのようにチェックします

f:id:baba_s:20180415173130p:plain

右下の入力欄には、アセットバンドルリストのファイル名(.csv)を入力します

アセットバンドルのビルド

f:id:baba_s:20180415173220p:plain

「Build」ボタンを押すと、アセットバンドルの作成が始まります

f:id:baba_s:20180415172300p:plain

作成が完了すると、「Export AssetBundle Path」で指定したフォルダ内に
アセットバンドルが保存されていることが確認できます

f:id:baba_s:20180415173321p:plain

また、アセットバンドルリストを使用する設定にした場合は、
「AssetBundleList SavePath」で指定したフォルダ内に
アセットバンドルリストが作成されていることが確認できます

FileName,AssetPath,AssetBundle,Extension,Version,Size,Date,UnityVersion
New Material,Assets/@Project/Materials/New Material.mat,new material,.mat,1,0.02454281,2018/04/15 23:00:00,2017.4.0f1
Square,Assets/@Project/Textures/Square.png,square,.png,1,0.001983643,2018/04/15 23:00:00,2017.4.0f1

アセットバンドルリストの中身は上記のようになっています

f:id:baba_s:20180415173523p:plain

アセットバンドルのビルド完了時に表示されるウィンドウで
「Convert」ボタンを押して、保存先のフォルダを指定すると、

f:id:baba_s:20180415173622p:plain

アセットバンドルリストを管理する ScriptableObject を作成することもできます

アセットバンドルの読み込み

using charcolle.EasyAssetBundle.Sample;
using UnityEngine;

public class Example : MonoBehaviour
{
    [SerializeField] private SampleAssetBundleInfoData m_data;

    private async void Start()
    {
        // ここではサンプルで用意されているマネージャーを使用しています
        // 本来であればゲームに合わせてマネージャーを自作します
        await EasyAssetBundleSampleManager.Initialize
        (
            data        : m_data,
            url         : "【アセットバンドルの URL】",
            cachePath   : "【アセットバンドルのキャッシュの URL】",
            isDebug     : true
        );

        var ab = await EasyAssetBundle.LoadAssetBundle( "New Material" );
        Debug.Log( ab );
        var mat = await EasyAssetBundle.Load<Material>( "New Material" );
        Debug.Log( mat );
    }
}

アセットバンドルは上記のようなコードで読み込むことができます