AssetBundle Graph Tool
ユーザーマニュアル
Version 1.3
大量のアセットのロードは重い?ABGTにおけるアセットのロード
Replace GameObject by Name (Experimental)
Replace With Incoming GameObject by Name (Experimental)
Assert Unwanted Assets In Bundle
PrefabBuilder スクリプト変更時にPrefabを再作成する
Asset Bundle Graph Tool (ABGT) はアセットの処理・変更からとアセットバンドルやプレイヤーのビルドにまつわる各種設定・スクリプティング作業を大幅に軽減することを目的として作られたツールです。Asset Bundle Graph Toolを活用することで、アセットバンドルの作成のみならず、アセットの作成・編集・設定にまつわる諸作業をグラフィカルに行うことができ、ゲーム開発中に発生するさまざまな反復的タスクからデザイナーやアーティストを解放することができます。
Unityには標準機能としてAssetBundleを作成する機能がありますが、これらの機能とABGTとの機能の関連性について知っておく必要があります。Unityの標準機能では、各AssetのInspectorから、そのAssetが入るべきAssetBundle名を指定することができ、その上でEditorスクリプトから BuildPipeline.BuildAssetBundles 関数を呼び出すことによってAssetBundleをビルドすることができます。一方、ABGTにおいては、この流れは利用しないということに注意が必要です。これとは異なる柔軟な手法で、各AssetBundleに入るAssetを決定し、またABGT内のBuildボタンを押すか、あるいはスクリプトから関数を呼び出すことによってAssetBundleをビルドすることができます。
ABGTはすべての作業をグラフ上で行います。グラフを作成したら、グラフの編集ウインドウからノードを追加していき、ノードを繋いでいくことでアセットを処理する流れ(パイプライン)を作っていきます。アセットは左から右に向かって処理されていき、それぞれのステージで分類や編集が行われて、最終的にアセットバンドルに含まれてビルドされたり、特定のディレクトリにコピーされたりしていきます。ABGTの組み込みノードや自分で拡張したノードを使って、この流れを作り多くのアセットに一括処理を加えていくことが、このツールの基本的な使い方です。
ABGTのグラフを作成するにはProject Viewの “Create” メニュー、あるいは右クリックメニューから”AssetBundle Graph” を選択します。あるいはメニュー>Window>Asset Bundle Graph>Open Graph Editor でAssetBundleウインドウを開いて”Create...” ボタンを押しても作ることができます。
AssetBundle Graphアセットを作成したら、ダブルクリックすることでグラフ編集ウインドウが開き、グラフの編集を始めることができます。新しいノードはウインドウで右クリックをして、作りたいノードを選択することで追加していくことができます。
アセットに何かの処理を加えるためには、何はともあれアセットをロードする必要があります。アセットをロードするには、グラフを右クリックしてLoad Assets 以下のメニューを選択してノードを作ります。ここでは、Load From Directory を選択して、特定のディレクトリーからアセットをロードしてみましょう。Load From Directoryノードは、Projectウインドウからディレクトリーをグラフエディターにドラッグすることで作る事もできます。
ノードが作られたら、ノードを選択してInspectorを開きます。Load From Directory以下のSelectボタンを押すと任意のディレクトリーを選択できるので、Assets以下のディレクトリーを自由に選択してみましょう。
これでアセットがロードできました。もう1つ何かノードを作ってノード間にコネクションを作って接続してみると、接続したノードの間でロードしたアセットが引き渡されているのが確認できます。このコネクションをクリックすると、Inspectorで引き渡されているアセットの一覧を見ることができます。
ロードのためのノードは、1つのグラフの中に何個あっても構いません。ただし、最終的にアセットバンドルにするときに、1つのアセットが複数のアセットバンドルに入るよう指定されていると、ビルド時にエラーとなるので気を付けましょう。
ABGTは数万のアセットを対象にできるように作られているツールです。ABGTにおけるアセットのロードとは、実際にはアセットのファイルパスや、アセットの型情報だけを読み込むことを指します。ノードによってはアセットの実データも使用しますが、そのような場合は使用される直前まで読み込まれないように、また読み込まれた実データは不要になったらすぐに解放するように作られています。
(注:ただし、Unity 5.4.3未満のバージョンでは、アセットのタイプ情報のみを参照する機能がUnityにないため、パフォーマンスで大きく劣ります。Unity 5.4.3未満の環境でお使いの方は、5.4.3以上にアップグレードすることを強くお勧めします)
ABGTはアセットをグループにまとめる事ができます。アセットバンドルに複数のアセットを含めたい時や、アセットの一群からPrefabを作成したい時などにグループを使うとよいでしょう。アセットは最初にロードされた時に “0” という1つのグループにまとめられています。グループにどのようにまとめるかは自由です。試しに、グラフを右クリックしてGroup Assets 以下のメニューから Group By File Path を選択してノードを作りましょう。
Group By File Pathは、ファイルパス名からグループにまとめるノードです。たとえば、敵キャラクターのアセットが Assets/Enemies ディレクトリー以下に “Pirate” とか “Vampire” といった形で入っている場合に、それぞれのディレクトリー以下のアセットを “Pirate” “Vampire” の2つのグループにまとめたいとします。
ディレクトリー毎にキャラクターのアセットが入っているので、これをグループでまとめたい
Group By File Pathは、ファイルパスをパターンマッチングしてグループにまとめます。上記のような時は、ワイルドカード(*)を使ったパターンマッチングが便利です。Pattern Type を “Wild Card” にして、Grouping Keyword に “Enemies/*/” と入れてみましょう。
Group By File Pathのインスペクター設定
もう一つ何かノードを作って Group By File Path の出力と繋げてみて、コネクションを選択してみましょう。Inspector を表示すると、 Pirate ディレクトリーや Vampire ディレクトリー以下のアセットがそれぞれ “Pirate” グループや “Vampire” グループに分類されていることが確認できます。
アセットのファイルパス中で入力パターン “Enemies/*/” とマッチする部分を使ってグループ化が行われている
アセットをグループにまとめたら、ためしにこのグループをアセットバンドルにしてみましょう。グループをアセットバンドルにするには、アセットバンドル設定を構築します。アセットバンドル設定とは、グループを実際にどんな名前のアセットバンドルにするかとか、Variantをどう設定するかとか、そういったものです。アセットバンドルを実際にビルドする前には、アセットバンドル設定を構築するノードを通して、グループをアセットバンドル設定へ変換します。
アセットバンドル設定を構築するには、グラフを右クリックしてConfigure Bundle 以下のメニューから Configure Bundle From Group を選択します。Configure Bundle From Groupノードが作られたら、Group By File Pathの出力をこのノードに繋いでみましょう。
無事、バンドル設定ができました!それでは、この設定でアセットバンドルを実際にビルドするための準備を整えます。でき上がったバンドル設定に従ってアセットバンドルをビルドできるようにするには、グラフを右クリックして Build/Build Asset Bundlesを選び、新しいノードを作ります。新しくグラフに追加されたBuild Asset Bundlesノードに、Configure Bundle From Groupノードの出力を繋いでみましょう。圧縮方法など、アセットバンドルのビルド設定を変更したい場合には、Build Asset Bundlesノードを選択してInspectorからチェックボックスを選択することで行えます。これでアセットバンドルをビルドする準備が整いました!
アセットの読み込みからアセットバンドルのビルドまで、一通りの作業を設定したので、実際にグラフをビルドして動作を見てみましょう。グラフをビルドするには、Asset Bundleウインドウのツールバーの右側にある”Build”ボタンを押します。
プログレスバーを出すダイアログが消えたら、ビルド完了です。Build Asset Bundlesで指定したディレクトリーを開いて見て、実際にファイルが出力されているかどうかを確認してみましょう。キャッシュディレクトリーにビルドするよう設定した場合は、AssetsのABGTのインストールディレクトリー以下のCacheディレクトリーにビルドされたアセットバンドルが配置されています。
プロジェクトが進んでグラフがいくつか作られると、複数のグラフを一度にビルドしたくなることがあるかもしれません。そのようなときには、メニュー>Window>Asset Bundle Graph>Open Batch Build Window を選択して、バッチビルドウインドウを開きます。
バッチビルドウインドウでは、プロジェクトにある複数のグラフを選択して任意のグラフを一度にビルドできるようになっています。また、複数選択したグラフのリストを “グラフコレクション” として保存して、再利用することができます。必要なグラフを選択して下部の Build ボタンを押せば、選択されたグラフが順にビルドされていきます。
ABGTには、プロジェクト単位で共有している設定があります。現在はアセットバンドルのキャッシュの保存先ディレクトリーがプロジェクト設定の中に含まれます。
プロジェクト設定を変更するには、メニュー>Window>Asset Bundle Graph>Open Project Window を選択して、Project Settings ウインドウを開きます
「基本的な使い方」のセクションでは、アセットを読み込んでからアセットバンドルを作って特定の場所にコピーするまでの基本的な使い方を学びました。このセクションでは、グラフツールで可能なちょっと発展的な使い方を学びます。
ディレクトリーやラベルでアセットをロードしたとき、渡されるアセットのタイプが常に1つとは限りません。アセットを名前や型で仕分けして次のノードに渡したい時には、Split Assets/Split By Filter を使うことができます。Split By Filterは名前とタイプを使ってアセットを分類できますが、分類方法は自分でFilterを追加することで増やすこともできます(高度なトピック:カスタムフィルターを追加する を参照)。渡されたアセットが複数のフィルター条件に合致する場合は、最初の合致する条件のアウトプットにアセットが出力されます。つまり、Split By Filterの条件の順番には強い意味があるので、注意が必要です。
ABGTはアセットを新しく作成するためにも利用できます。例えば、アーティストが追加したテクスチャーやモデルから、自動的に実際のゲームで使うPrefabを作成したい、などということがあるかもしれません。グラフを右クリックして Create Assets/Create Prefab From Groupを選択すると、グループからPrefabを作成するノードを作ることができます。Create Prefab From GroupでPrefabを作成するためには、PrefabBuilderスクリプトを新たに作成してプロジェクトに追加する必要があります。PrefabBuilderの作り方は 高度なトピック>Prefabを自動的に作成する を参照してください。。Create Prefab From GroupにPrefab作成に使用するグループを引き渡すと、自動的にPrefabを作成して出力に追加してくれます。
アセットバンドルに追加するとき、あるいは単にバッチ処理の一環として、アセットを一括編集したい時があるかもしれません。ABGTを使うことで、インポート設定を一括で変更したり、Importerを経由しないアセット(MaterialやRenderTextureなど)を直接変更したりすることができます。テクスチャやモデルのインポート設定を変更したい場合は、グラフを右クリックして Modify Assets/Overwrite Import Setting を選択してください。
Overwrite Import Settingノードはモデル、テクスチャ、オーディオおよびビデオのインポート設定を変更することができます。実際の使い方は ビルトインノード>Overwrite Import Setting を参照してください。作成されたノードにアセットを引き渡すと、ビルド時にアセットの設定が変更されます。
また、インポーターのないアセットを直接編集したい場合は、Modify Assets Directlyノードを使用します。実際の使い方は ビルトインノードのModify Assets Directly を参照してください。
アセットバンドルを作成するときに、うっかり望まないアセットがアセットバンドルに入ってしまうことがあるかもしれません。アセットバンドルに望まないデータが入っていないことをチェックするためにはAssertionノードを使用することができます。ビルトインノードの Assert Unwanted Assets In Bundle を使用すると、特定のディレクトリー以下のアセットのみが含まれることを許可したり、特定のディレクトリー以下のアセットが含まれることを禁止したりすることができます。望まれないアセットが検出されるとノードがエラーを報告するので、ビルド前に察知して、具体的にどのファイルが含まれてしまっているかを知ることができます。詳しい使い方はビルトインノードのAssert Unwanted Assets In Bundle を参照してください。
ABGTに含まれる組み込みノードを解説します。
Load From Directoryは指定のディレクトリー以下のアセットをロードします。
Load By Search Filterは指定のサーチフィルターを使ってアセットをロードします。サーチフィルターの形式はProjectウインドウの検索形式と同じです。詳しくはProjectウインドウのドキュメントを参照してください。
1. サーチフィルター
Last Imported Itemsは最後にインポートされたアセットをロードします。このノードはグラフをPostprocessorとして使う時のために用意されています。
Split By Filterは入力されたアセットを諸条件によって振り分けます。デフォルトでは振り分け条件に使用できるのはファイルパスとアセットタイプです。カスタムフィルターをプロジェクトに追加することで、Split By Filterは振り分け方法を拡張できます。
Split By Filterのアセットの振り分けは、上の条件から順に行っていきます。もしあるアセットが複数のフィルター条件にマッチする場合、そのアセットはフィルター条件の最も上の出力先に振り分けられ、下の出力先には含まれません。
ファイルパスを使ってグループを作成します。
Group By Sizeは入力されたアセットをサイズでグループ化します。たとえば「ファイルサイズ1MBずつ」というふうに設定した場合、アセットのファイルサイズをチェックしながらグループに順に追加していき、合計が1MBに達すると、次のアセットを新しいグループに追加します。単体のアセットが指定のサイズより大きい場合、そのファイルは単独で1つのグループになります。このノードはグループのサイズをかならず指定サイズ以下におさめるものではありません。
Group By Fileは入力されたアセットを1つずつ別々のグループに追加します。たとえばGroup By Fileに3つのアセットを引き渡した場合、Group By Fileは “0”, “1”, “2” の3つのグループを作成し、アセットをそれぞれのグループに1つずつ登録します。
Create Prefab From GroupはアセットのグループからPrefabを新しく作成します。Prefabの作成はPrefabBuilderを指定することで行います。自分のプロジェクトにマッチするPrefabを作るためには、必要なPrefabを作成するPrefabBuilderをプロジェクトに追加して指定しましょう。PrefabBuilderの実装方法は、高度なトピック:「Prefabを自動的に作成する」を参照してください。
ABGTには2つのビルトインPrefabBuilderが含まれています。
Replace GameObject by Nameは引き渡されたGameObjectのPrefabの内容をチェックして、インスペクターで指定した名前とマッチする子のGameObjectを、同じくインスペクターで指定したPrefabのゲームオブジェクトと入れ替えた新しいPrefabを作成します。
Replace With Incoming GameObject by Nameはインスペクターで指定したPrefabの子のGameObjectをチェックして、引き渡されたGameObject群で名前がマッチするものがある時に、引き渡されたGameObjectで入れ替えた新しいPrefabを作成します。
GenerateAssetは引き渡されたアセットから新しいアセットを新たに生成します。アセットの生成はAssetGeneratorを指定することで行います。必要なアセットを作成するAssetGeneratorをプロジェクトに追加して指定しましょう。AssetGeneratorの実装方法は、高度なトピック「派生アセットを自動的に作成する」を参照してください。
ABGTには1つのビルトインAssetGeneratorが含まれています。
Texture Scalerはテクスチャーアセットを受け取って、リサイズしたテクスチャーアセットを新たに生成します。
Duplicate Asset は受け取ったアセットの複製を生成します。Duplicate Asset にはインスペクターから設定するプロパティはありません。
Overwrite Import Settingは引き渡されたアセットのインポート設定を上書きします。Overwrite Import Settingによってインポート設定の変更ができるのはインポーターの存在するモデル、テクスチャー、オーディオおよびビデオクリップ(Unity 5.6以降) のみです。Overwrite Import Settingは明示的にImporter Typeを指定することもできますが、渡されたアセットの型から自動的にImporter Typeを設定させることもできます。
Overwrite Import Settingは設定用のアセットを内部で作成してアセットのインポート用プロパティを保存するために使用しますが、たとえばテクスチャーから複数のスプライトを定型的に作成したい場合などでは、このデフォルトの設定用アセットよりもプロジェクトの所定のアセットを設定元として使った方が便利な場合があります。そのような時のためにUse Custom Setting Asset オプションを通して、プロジェクト内の任意のアセットを設定元として指定できます。
インポータータイプ設定前のプロパティ
Modify Asset Directly は引き渡されたアセットのプロパティを直接編集します。Modify Asset Directlyはインポーターのないアセットに関して編集を行う際に使用します。。Modify Asset Directlyノードは、引き渡されたアセットのタイプをチェックして、自分自身が編集するアセットのタイプを判断します。自分のプロジェクトの用途にマッチするようアセットを編集するために、独自のModifierを実装して利用することができます。Modifierの実装方法は、高度なトピック:「アセットを自分の方法で編集する」を参照してください。
Label Assets は引き渡されたアセットにラベルを設定します。
Configure Bundle From Group は引き渡されたアセットのグループからアセットバンドルのビルドに使用するアセットバンドル設定を作成します。Configure Bundle From Group はvariantsを追加すると入力のノードが増えます。
引き渡されたアセットバンドル設定のアセットが暗黙に依存するアセットを展開して明示的なアセットバンドル設定を作成します。複数のアセットバンドルが引き渡されている場合、それぞれのアセットバンドル設定に重複して共有しているアセットの単位で新しいアセットバンドル設定を作成します。
Assert Unwanted Assets In Bundleはアセットバンドルに望まれないアセットが含まれていないことをチェックします。
引き渡されたアセットバンドル設定を使用してアセットバンドルをビルドします。
このプロジェクトのプレイヤーをビルドします。Build Asset Bundlesの出力を渡すことで、アセットバンドルのアセットを考慮したプレイヤーのビルドを行うことができます。Build Playerにアセットバンドルの引き渡しを行わない場合、アセットバンドルの内部でのみ使用されているスクリプト等が最適化によって除去されてしまうなど、思わぬ副作用が発生することがあります。
Export To Directory は引き渡されたアセットを指定のディレクトリーにコピーします。
Mirror Directoryは指定されたプロパティに基づいてディレクトリーのミラーリングを行います。Mirror Directoryは引き渡されたアセットを使用しません。アセットの引き渡しは、他のノードと合わせて使う際に望まれた実行順でミラーリングを行うためだけに存在します。Mirror DirectoryはStreamingAssetsなどUnityのビルドと動作に関わる特別なディレクトリーに配置するファイルを処理する際に便利です。
ビルトインノードは多くのユースケースを網羅していますが、もしかしたら独自の処理を実行するノードを作りたくなることがあるかもしれません。そのような時のために、ABGTではユーザーが自由に独自の処理を行うカスタムノードを追加できます。カスタムノードを作成するには、メニュー>Window>Asset Bundle Graph>Create Node Script>Custom Node Script を選択します。すると、UnityEngine.AssetBundleGraph/Generated ディレクトリー以下にカスタムノードのスクリプトが生成されます。生成されたスクリプトは自由にリネーム、または移動して構いません。生成されたカスタムノードは、デフォルトでは Custom以下から選択して作成できます。
独自のカスタムノードを実装するには、Nodeを継承したクラスを作成します。また、カスタムノードは必ずCustomNodeアトリビュートをもつ必要があります。CustomNodeアトリビュートでは、ドロップダウンメニューでの表示位置(メニュー階層、ソート優先順)を指定します。たとえばメニューから生成したカスタムノードスクリプトでは、以下の様な設定になっています。
[CustomNode("Custom/MyNode", 1000)]
Node クラスの詳しい仕様については、 APIドキュメント を参照してください。
Split By Filter ではファイルパスおよびアセットの型に従ってアセットを仕分けることができますが、もっと独自の条件でフィルターしたい場合もあるでしょう。たとえば「アルファチャンネルのあるテクスチャーだけを取得したい」といった状況があるかもしれません。
そのようなとき、もしもアセットを独自の方法でSplit By Filterで仕分けたいときには、カスタムフィルターを追加することで行えます。
カスタムフィルターを追加するには、 メニュー>Window>Asset Bundle Graph>Create Node Script>Filter Script を選択します。 すると、UnityEngine.AssetBundleGraph/Generated ディレクトリー以下にカスタムフィルターのスクリプトが生成されます。生成されたスクリプトは自由にリネーム、または移動して構いません。
カスタムフィルターが追加されると、Split By Filterで「+」ボタンを押してフィルター条件を追加する際にドロップダウンメニューが現れるようになります。
カスタムフィルターを独自に実装するには、IFilter インターフェイスを実装したクラスを作成します。また、カスタムフィルターにはCustomFilterアトリビュートを設定する必要があります。CustomFilterアトリビュートは、Filter Settings のドロップダウンメニューでのGUI表示名を設定します。例えば上記の例では、以下のように記述されています。
[CustomFilter("My Filter")]
IFilter に関する詳しい説明はAPIドキュメントを参照してください。
Material などのアセットは、インポーターがないのでプラットフォームの事情に合わせて編集するといったことが困難ですが、実際のプロダクションではプラットフォームやさまざまな事情に合わせてアセットを編集したくなることがあります。Modify Assets Directly ノードを使うことでアセットを直接編集することができます。もしもアセットを独自の方法で編集したいときには、カスタムモディファイアーを追加することで行えます。
カスタムモディファイアーを追加するには、 メニュー>Window>Asset Bundle Graph>Create Node Script>Modifier Script を選択します。 すると、UnityEngine.AssetBundleGraph/Generated ディレクトリー以下にカスタムモディファイアーのスクリプトが生成されます。生成されたスクリプトは自由にリネーム、または移動して構いません。カスタムモディファイアーが追加されると、Modifierドロップダウンメニューから追加したカスタムモディファイアーが選択できるようになります。
カスタムモディファイアーはIModifier インターフェイスを実装したクラスで、さらにCustomModifierアトリビュートが設定されています。カスタムモディファイアーのアトリビュートは以下の様な形式で、GUIで表示するモディファイアー名と、モディファイアーが変更する型を指定します。
[CustomModifier("MyModifier", typeof(RenderTexture))]
IModifier に関する詳しい説明はAPIドキュメントを参照してください。
例えば敵キャラクターやUI、ステージに配置するプロップなど、GameObjectに所定のスクリプトやコンポーネントを追加した定型的なPrefabを、開発中に大量に作る必要が発生することがあります。Create Prefab From Group ノードを使うことで、このような定型的なPrefabをグループから作ることができます。プロジェクトに必要なPrefabを作成したい場合は、プロジェクトにカスタムPrefabBuilderを追加することで行えます。
カスタムPrefabBuilderを追加するには、 メニュー>Window>Asset Bundle Graph>Create Node Script>PrefabBuilder Script を選択します。 すると、UnityEngine.AssetBundleGraph/Generated ディレクトリー以下にPrefabBuilderのスクリプトが生成されます。生成されたスクリプトは自由にリネーム、または移動して構いません。
スクリプトが追加されると、PrefabBuilder ドロップダウンメニューから、新しく追加したPrefabBuilderが選択できるようになります。
カスタムPrefabBuilderは、他のカスタムスクリプトと同様にCustomPrefabBuilderアトリビュートを追加する必要があります。CustomPrefabBuilderからはこのPrefabBuilderのGUI表示名を指定します。たとえば上記の例では、以下のようなアトリビュートが設定されています。
[CustomPrefabBuilder("MyPrefabBuilder")]
カスタム PrefabBuilderを実装するためには、IPrefabBuilder インターフェイスを実装したクラスを作成します。 IPrefabBuilder に関する詳しい説明はAPIドキュメントを参照してください。
PrefabBuilderスクリプトを変更した時に、そのスクリプトを使用するPrefabを全て再作成したくなる場合があります。そのような場合には、CustomPrefabBuilderにバージョンをつけることで行うこと可能です。バージョンの指定は以下の様に行います。
[CustomPrefabBuilder("MyPrefabBuilder", “ver.1”)]
バージョン文字列を変更すると、このPrefabBuilderを使用するPrefabは次回のビルド時に全て再作成の対象となります。
例えば多くの異なる性能のスマートフォンに向けてアセットを準備するとき、プラットフォーム毎のレベル以上に細かくテクスチャーやマテリアルを用意したくなる場合があります。このような時に各スペック毎にリサイズしたテクスチャーやマテリアルを全て用意するのは骨です。
Generate Asset を使えば、元アセットから派生アセットを自動的に生成して利用することが可能になります。Texture Scaler または Duplicate Asset といったビルトインのジェネレーター以外の機能を独自に拡張して使用したい場合は、プロジェクトに AssetGenerator を追加することで行えます。
AssetGenerator を追加するには、 メニュー>Window>Asset Bundle Graph>Create Node Script>AssetGenerator Script を選択します。 すると、UnityEngine.AssetBundleGraph/Generated ディレクトリー以下に AssetGenerator のスクリプトが生成されます。生成されたスクリプトは自由にリネーム、または移動して構いません。
スクリプトが追加されると、AssetGenerator ドロップダウンメニューから、新しく追加した AssetGenerator が選択できるようになります。
AssetGenerator は、他のカスタムスクリプトと同様に CustomAssetGenerator アトリビュートを追加する必要があります。 CustomAssetGenerator からはこの AssetGenerator のGUI表示名とバージョンを指定します。たとえば上記の例では、以下のようなアトリビュートが設定されています。
[CustomAssetGenerator("My Generator", "v1.0")]
AssetGenerator を実装するためには、IAssetGenerator インターフェイスを実装したクラスを作成します。 IAssetGenerator に関する詳しい説明はAPIドキュメントを参照してください。
グラフの実行が終わった際に通知を出したりするなど、事後処理を行いたいことがあります。ポストプロセス スクリプトを追加すると、グラフの実行後に自動的に呼び出され、結果を受け取ることができます。
ポストプロセススクリプト を追加するには、 メニュー>Window>Asset Bundle Graph>Create Node Script>Postprocess Script を選択します。 すると、UnityEngine.AssetBundleGraph/Generated ディレクトリー以下にポストプロセススクリプトが生成されます。生成されたスクリプトは自由にリネーム、または移動して構いません。ポストプロセススクリプトには DoPostprocess () というメソッドがあり、AssetBundleBuildReport および ExportReport の形でビルド結果やファイルのコピー結果を受け取ることができます。
ポストプロセスを実装するためには、 IPostprocess インターフェイスを実装したクラスを作成します。 IPostprocess に関する詳しい説明はAPIドキュメントを参照してください。
独自にエディター拡張やカスタムメニューを作っているとき、ABGTのグラフをスクリプトから実行したくなるかもしれません。そのようなときには AssetBundleGraphUtility を通じて、任意のグラフを実行することができます。 AssetBundleGraphUtility は、グラフを単体で実行することも、任意のグラフをまとめて実行することも可能です。
AssetBundleGraphUtility に関する詳しい説明はAPIドキュメントを参照してください。
AssetBundle Browser はアセットバンドルを設定したり、設定済みのアセットバンドルの内容を確認したり、ビルドしたりといったことができるツールです。AssetBundle Browser はGithub もしくはアセットストアから入手可能で、Unity 5.6以上のバージョンで動作します。
ABGTで設定したアセットバンドルに含まれるファイルをチェックしたい時に、ABGTを AssetBundle Browser と共に使うことができます。
AssetBundle Browser とABGTをプロジェクトにインストールすると、AssetBundle Browserのドロップダウンメニューから「AssetBundles(GraphTool)」を選択できるようになります。これを選択する事で、ABGTで設定したアセットバンドル設定をチェックすることができます。
なお、GraphTool側のアセットバンドル設定はグラフによって設定されているものなので、、AssetBundle Browser からは閲覧のみが可能で、編集をすることはできません。
ABGTは利用時にいくつかのファイルやフォルダを生成します。
ABGTをプロジェクトの一部としてバージョン管理システムに入れる場合、下記のガイドを参考にしてください。
コミットすべきでないもの(無視すべきファイル)
コミットすべきもの(バージョン管理すべきファイル)