[JP]AssetBundle Graph Tool Document (v1.3)

AssetBundle Graph Tool
ユーザーマニュアル

Version 1.3

概要

Unity標準機能との関連について

インターフェイス

ABGTメニュー

基本的な使い方

グラフを作成する

アセットをロードする

大量のアセットのロードは重い?ABGTにおけるアセットのロード

アセットをグループにまとめる

アセットバンドル設定を構築する

アセットバンドルを作成する

グラフをビルドする

グラフをまとめてビルドする

プロジェクト設定を変更する

ちょっと発展的な使い方

アセットを分類する

アセットを作成する

アセットを編集する

アセットバンドル設定をチェックする

ビルトインノード

Load From Directory

概要

プロパティ

Load By Search Filter

概要

プロパティ

Last Imported Items

概要

Split By Filter

概要

プロパティ

Group By File Path

概要

プロパティ

Group By Size

概要

プロパティ

Group By File

概要

Create Prefab From Group

概要

プロパティ

ビルトインPrefabBuilder

Replace GameObject by Name (Experimental)

Replace With Incoming GameObject by Name (Experimental)

Generate Asset

概要

プロパティ

ビルトインAssetGenerator

Texture Scaler

Duplicate Asset

Overwrite Import Setting

概要

カスタムアセットの指定

プロパティ

Modify Asset Directly

概要

プロパティ

Label Assets

概要

プロパティ

Configure Bundle From Group

概要

プロパティ

Extract Shared Assets

概要

プロパティ

Assert Unwanted Assets In Bundle

概要

プロパティ

Build Asset Bundles

概要

プロパティ

Build Player

概要

プロパティ

Export To Directory

概要

プロパティ

Mirror Directory

概要

プロパティ

高度なトピック

カスタムノードを追加する

カスタムフィルターを追加する

アセットを自分の方法で編集する

Prefabを自動的に作成する

PrefabBuilder スクリプト変更時にPrefabを再作成する

派生アセットを自動的に作成する

ビルド後に事後処理を走らせる

スクリプトからグラフをビルドする

コマンドラインツールを使って実行する

AssetBundle Browserと合わせて使う


概要

Asset Bundle Graph Tool (ABGT) はアセットの処理・変更からとアセットバンドルやプレイヤーのビルドにまつわる各種設定・スクリプティング作業を大幅に軽減することを目的として作られたツールです。Asset Bundle Graph Toolを活用することで、アセットバンドルの作成のみならず、アセットの作成・編集・設定にまつわる諸作業をグラフィカルに行うことができ、ゲーム開発中に発生するさまざまな反復的タスクからデザイナーやアーティストを解放することができます

Unity標準機能との関連について

Unityには標準機能としてAssetBundleを作成する機能がありますが、これらの機能とABGTとの機能の関連性について知っておく必要があります。Unityの標準機能では、各AssetのInspectorから、そのAssetが入るべきAssetBundle名を指定することができ、その上でEditorスクリプトから BuildPipeline.BuildAssetBundles 関数を呼び出すことによってAssetBundleをビルドすることができます。一方、ABGTにおいては、この流れは利用しないということに注意が必要です。これとは異なる柔軟な手法で、各AssetBundleに入るAssetを決定し、またABGT内のBuildボタンを押すか、あるいはスクリプトから関数を呼び出すことによってAssetBundleをビルドすることができます。

インターフェイス

  1. 開いているグラフ名を表示します。クリックでドロップダウンメニューを表示します。
  2. アセットを再読み込みします。
  3. このグラフのエラーを一覧表示します。
  4. グラフの再読込・及びビルド処理時の詳細なメッセージをコンソールに出力します。
  5. Onにすると、このグラフをAsset Postprocessorとして使用します。Asset Postprocessorとしてグラフを使用する場合、アセットに更新があるたびにこのグラフが実行されます。
  6. 現在のプラットフォーム。クリックでプラットフォームを切り替えるドロップダウンメニューを表示します。
  7. このグラフを実行します。
  8. 開いているグラフのAssets以下のパスを表示します。

ABGTメニュー

  1. グラフエディターで開くグラフを選択します。
  2. 新しいグラフアセットを作成します。
  3. グラフをJSON形式でエクスポートしたり、インポートしたりすることができます

基本的な使い方

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は数万のアセットを対象にできるように作られているツールです。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 ボタンを押せば、選択されたグラフが順にビルドされていきます。

  1. バッチビルドを行うプラットフォーム
  2. グラフコレクションを使用するかどうかの選択
  3. 選択中のグラフコレクションを削除する
  4. 選択中のグラフコレクション名を変更する
  5. ビルドするグラフを選択する
  6. グラフを編集するためにエディターで開く
  7. ビルドする

プロジェクト設定を変更する

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 From Directoryは指定のディレクトリー以下のアセットをロードします。

プロパティ

  1. ディレクトリー指定パス
  2. ディレクトリー選択ダイアログを開く
  3. Project Viewで指定ディレクトリーをハイライトする

Load By Search Filter

概要

Load By Search Filterは指定のサーチフィルターを使ってアセットをロードします。サーチフィルターの形式はProjectウインドウの検索形式と同じです。詳しくはProjectウインドウのドキュメントを参照してください。

プロパティ

1. サーチフィルター

Last Imported Items

概要

Last Imported Itemsは最後にインポートされたアセットをロードします。このノードはグラフをPostprocessorとして使う時のために用意されています。

Split By Filter

概要

Split By Filterは入力されたアセットを諸条件によって振り分けます。デフォルトでは振り分け条件に使用できるのはファイルパスとアセットタイプです。カスタムフィルターをプロジェクトに追加することで、Split By Filterは振り分け方法を拡張できます。

Split By Filterのアセットの振り分けは、上の条件から順に行っていきます。もしあるアセットが複数のフィルター条件にマッチする場合、そのアセットはフィルター条件の最も上の出力先に振り分けられ、下の出力先には含まれません。

プロパティ

  1. フィルター条件。ファイルパスの指定には正規表現を使用できます
  2. 新しいフィルター条件を追加します。カスタムフィルターがインストールされている場合、この+ボタンを押した時に追加するフィルターを選ぶためのドロップダウンメニューが表示されます。

Group By File Path

概要

ファイルパスを使ってグループを作成します。

プロパティ

  1. グループ名にディレクトリーセパレータ(“/“)を含めることを許可するかを設定します。
  2. プラットフォーム別設定タブ
  3. グルーピングキーワード(4)のフォーマットを指定します。Wild Cardの場合、ファイルパスの一部が*とマッチする時に、その部分がグループ名となります。Regular Exporessionを使用する場合、グルーピングキーワードは正規表現で記述します。
  4. ファイルパスからグループ名を取得するために使用するマッチング条件を指定します。マッチングの方法は3のPattern Typeで指定します。

Group By Size

概要

Group By Sizeは入力されたアセットをサイズでグループ化します。たとえば「ファイルサイズ1MBずつ」というふうに設定した場合、アセットのファイルサイズをチェックしながらグループに順に追加していき、合計が1MBに達すると、次のアセットを新しいグループに追加します。単体のアセットが指定のサイズより大きい場合、そのファイルは単独で1つのグループになります。このノードはグループのサイズをかならず指定サイズ以下におさめるものではありません。

プロパティ

  1. プラットフォーム別設定タブ
  2. グルーピングに使用する方法を指定します。By File Sizeの場合はアセットのファイルサイズを、By Runtime Memory Sizeならばロード後のメモリ使用量を見てグルーピングを行います。By Runtime Memory Sizeは全てのアセットに対して使えるわけではないので注意してください
  3. グルーピングに使用するサイズの目安(KB単位)

Group By File

概要

Group By Fileは入力されたアセットを1つずつ別々のグループに追加します。たとえばGroup By Fileに3つのアセットを引き渡した場合、Group By Fileは “0”, “1”, “2” の3つのグループを作成し、アセットをそれぞれのグループに1つずつ登録します。

Create Prefab From Group

概要

Create Prefab From GroupはアセットのグループからPrefabを新しく作成します。Prefabの作成はPrefabBuilderを指定することで行います。自分のプロジェクトにマッチするPrefabを作るためには、必要なPrefabを作成するPrefabBuilderをプロジェクトに追加して指定しましょう。PrefabBuilderの実装方法は、高度なトピック:「Prefabを自動的に作成する」を参照してください。

プロパティ

  1. このノードで使用するPrefabBuilder
  2. Prefab置き換えオプション。詳しくはAPIドキュメントを参照してください
  3. プラットフォーム別設定タブ
  4. 指定したPrefabBuilderのインスペクター

ビルトインPrefabBuilder

ABGTには2つのビルトインPrefabBuilderが含まれています。

Replace GameObject by Name (Experimental)
 

Replace GameObject by Nameは引き渡されたGameObjectのPrefabの内容をチェックして、インスペクターで指定した名前とマッチする子のGameObjectを、同じくインスペクターで指定したPrefabのゲームオブジェクトと入れ替えた新しいPrefabを作成します。

  1. GameObjectの置換で使用する名前
  2. 置換に使用するGameObject
  3. 置換する名前とGameObjectを追加

Replace With Incoming GameObject by Name (Experimental)

Replace With Incoming GameObject by Nameはインスペクターで指定したPrefabの子のGameObjectをチェックして、引き渡されたGameObject群で名前がマッチするものがある時に、引き渡されたGameObjectで入れ替えた新しいPrefabを作成します。

  1. 入力のオブジェクトで置換するベースのGameObject

Generate Asset

概要

GenerateAssetは引き渡されたアセットから新しいアセットを新たに生成します。アセットの生成はAssetGeneratorを指定することで行います。必要なアセットを作成するAssetGeneratorをプロジェクトに追加して指定しましょう。AssetGeneratorの実装方法は、高度なトピック「派生アセットを自動的に作成する」を参照してください。

プロパティ

  1. 生成する派生アセットのラベル。
  2. 派生アセットの生成に使用するAssetGenerator を選択します。
  3. プラットフォーム別設定タブ。
  4. 指定したAssetGeneratorの設定。
  5. AssetGeneratorを削除します。
  6. 新しいAssetGeneratorを追加します。

ビルトインAssetGenerator

ABGTには1つのビルトインAssetGeneratorが含まれています。

Texture Scaler

Texture Scalerはテクスチャーアセットを受け取って、リサイズしたテクスチャーアセットを新たに生成します。

  1. 派生テクスチャーの出力形式を選択します。JPG, PNG, EXR(Unity 5.6以降)が選択できます
  2. リサイズに使用するスケーリング処理方法。Point(ニアレストネイバー形式)、Bilinear(バイリニア形式) が選択できます
  3. 元アセットに対するサイズ。1~100% で指定します。
  4. JPG形式を選択した場合のJPG品質を1~100 で設定します。
  5. EXR形式を選択した場合のEXR保存オプションを設定します。詳しくはAPIドキュメントを参照してください。

Duplicate Asset

Duplicate Asset は受け取ったアセットの複製を生成します。Duplicate Asset にはインスペクターから設定するプロパティはありません。

Overwrite Import Setting

概要

Overwrite Import Settingは引き渡されたアセットのインポート設定を上書きします。Overwrite Import Settingによってインポート設定の変更ができるのはインポーターの存在するモデル、テクスチャー、オーディオおよびビデオクリップ(Unity 5.6以降) のみです。Overwrite Import Settingは明示的にImporter Typeを指定することもできますが、渡されたアセットの型から自動的にImporter Typeを設定させることもできます

カスタムアセットの指定

Overwrite Import Settingは設定用のアセットを内部で作成してアセットのインポート用プロパティを保存するために使用しますが、たとえばテクスチャーから複数のスプライトを定型的に作成したい場合などでは、このデフォルトの設定用アセットよりもプロジェクトの所定のアセットを設定元として使った方が便利な場合があります。そのような時のためにUse Custom Setting Asset オプションを通して、プロジェクト内の任意のアセットを設定元として指定できます。

プロパティ


インポータータイプ設定前のプロパティ

  1. インポータータイプの選択。

  1. (Texture TypeがSpriteの時のみ表示)スプライトモードの設定を上書きするかどうか。
  2. (Texture TypeがSpriteの時のみ表示)スプライトのパッキング用タグを設定するかどうか。
  3. (Texture TypeがSpriteの時のみ表示)スプライトのパッキング用タグを設定する場合のタグ名。*はグループ名で置換されます。
  4. インポーター設定を行うための元アセットを指定するかどうか。
  5. 元アセットを指定して使用する場合のアセット。
  6. 指定したアセットをプロジェクトウインドウでハイライトします。
  7. 指定した型のインポーターの各種プロパティ。
  8. このインポーター設定をリセットして初期化します。

Modify Asset Directly

概要

Modify Asset Directly は引き渡されたアセットのプロパティを直接編集します。Modify Asset Directlyはインポーターのないアセットに関して編集を行う際に使用します。。Modify Asset Directlyノードは、引き渡されたアセットのタイプをチェックして、自分自身が編集するアセットのタイプを判断します。自分のプロジェクトの用途にマッチするようアセットを編集するために、独自のModifierを実装して利用することができます。Modifierの実装方法は、高度なトピック:アセットを自分の方法で編集する」を参照してください。

プロパティ

  1. 使用するModifierの選択
  2. プラットフォーム別設定タブ
  3. 指定したModifierのプロパティ

Label Assets

概要

Label Assets は引き渡されたアセットにラベルを設定します。

プロパティ

  1. OverwriteをOnにすると、アセットの既存のラベルを消去してこのノードで設定したラベルと置き換えます。
  2. アセットに設定するラベル。“,” で区切ることで複数のラベルを設定できます

Configure Bundle From Group

概要

Configure Bundle From Group は引き渡されたアセットのグループからアセットバンドルのビルドに使用するアセットバンドル設定を作成します。Configure Bundle From Group はvariantsを追加すると入力のノードが増えます。

プロパティ

  1. Onにすると、グループ名をvariantとして扱います。
  2. Variant名を設定します。①とは併用できません。
  3. Variant設定を追加します。
  4. プラットフォーム別設定タブ
  5. アセットバンドル名のテンプレートを指定します。*はグループ名で置換されます。①を有効にしている場合はグループ名はvariantとして使われるので、*を含めることはできません。

Extract Shared Assets

概要

引き渡されたアセットバンドル設定のアセットが暗黙に依存するアセットを展開して明示的なアセットバンドル設定を作成します。複数のアセットバンドルが引き渡されている場合、それぞれのアセットバンドル設定に重複して共有しているアセットの単位で新しいアセットバンドル設定を作成します。

プロパティ

  1. 共有アセットのアセットバンドル設定に使用する名前。*には 0,1,2.. といった形で数字が入ります。
  2. プラットフォーム別設定タブ
  3. 有効にすると、共有アセットをサイズ毎に分割します。
  4. グルーピングに使用する方法を指定します。By File Sizeの場合はアセットのファイルサイズを、By Runtime Memory Sizeならばロード後のメモリ使用量を見てグルーピングを行います。By Runtime Memory Sizeは全てのアセットに対して使えるわけではないので注意してください。
  5. グルーピングに使用するサイズの目安(KB単位)

Assert Unwanted Assets In Bundle

概要

Assert Unwanted Assets In Bundleはアセットバンドルに望まれないアセットが含まれていないことをチェックします。

プロパティ

  1. アサート方法を選択します。“Allow Only Assets Under Assertion Path” を選択すると、3のアサーションパス以下のアセットがアセットバンドル設定に含まれている場合にエラーとなります。“Prohibit Assets Under Assertion Path” を選択すると、アサーションパス以下のアセットがアセットバンドル設定に含まれている場合にエラーとなります。
  2. プラットフォーム別設定タブ
  3. アサーションに使用するディレクトリーパスを指定します。

Build Asset Bundles

概要

引き渡されたアセットバンドル設定を使用してアセットバンドルをビルドします。

プロパティ

  1. アセットバンドルに含めるアセットのAssetImporterに、このグラフで設定したアセットバンドル名およびvariantの設定を残すかどうかを設定します。
  2. プラットフォーム別設定タブ
  3. 出力オプション。キャッシュディレクトリーに出力するか、出力ディレクトリーを直接指定するか選択できます
  4. 出力オプションで Build In Cache Directory 以外を選択した際に出力するディレクトリーを指定します。
  5. ディレクトリー選択ダイアログを開きます。
  6. ディレクトリーを Finder(Mac)/Explorer(Windows) で開きます。
  7. アセットバンドルビルドオプション。詳しくは APIドキュメント を参照してください。

Build Player

概要

このプロジェクトのプレイヤーをビルドします。Build Asset Bundlesの出力を渡すことで、アセットバンドルのアセットを考慮したプレイヤーのビルドを行うことができます。Build Playerにアセットバンドルの引き渡しを行わない場合、アセットバンドルの内部でのみ使用されているスクリプト等が最適化によって除去されてしまうなど、思わぬ副作用が発生することがあります。

プロパティ

  1. プラットフォーム選択タブ
  2. プレイヤーをビルドするディレクトリーを指定します。
  3. プレイヤー名。
  4. プレイヤービルドオプション。詳しくは APIドキュメント を参照してください
  5. プレイヤーのビルド時に含めるシーン。

Export To Directory

概要

Export To Directory は引き渡されたアセットを指定のディレクトリーにコピーします。

プロパティ

  1. プラットフォーム別設定タブ
  2. 出力オプション。出力先ディレクトリーがない場合にエラーとするか、出力先ディレクトリーを自動生成するか、毎回出力先を削除して再作成するかを選択します。
  3. コピー先ディレクトリー
  4. Onにすると、ディレクトリー構造を圧縮してコピーします。

Mirror Directory

概要

Mirror Directoryは指定されたプロパティに基づいてディレクトリーのミラーリングを行います。Mirror Directoryは引き渡されたアセットを使用しません。アセットの引き渡しは、他のノードと合わせて使う際に望まれた実行順でミラーリングを行うためだけに存在します。Mirror DirectoryはStreamingAssetsなどUnityのビルドと動作に関わる特別なディレクトリーに配置するファイルを処理する際に便利です。

プロパティ

  1. プラットフォーム別設定タブ
  2. ミラーリング設定を指定します。“Keep Already Copied Files” を指定すると、ミラーリング先に存在しない、あるいは更新されたファイルのみをコピーします。ミラーリング元に存在しないファイルは削除されますが、ディレクトリーの削除は行われません。“Always Recreate Destination” を選択すると、ミラーリング先を削除してから常に再作成します。
  3. ミラーリング元ディレクトリーのパス。フルパスでない場合はプロジェクト相対パスとして扱われます。
  4. ミラーリング先ディレクトリーのパス。フルパスでない場合はプロジェクト相対パスとして扱われます。

高度なトピック

カスタムノードを追加する

ビルトインノードは多くのユースケースを網羅していますが、もしかしたら独自の処理を実行するノードを作りたくなることがあるかもしれません。そのような時のために、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ドキュメントを参照してください

Prefabを自動的に作成する

例えば敵キャラクターや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を再作成する

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 はアセットバンドルを設定したり、設定済みのアセットバンドルの内容を確認したり、ビルドしたりといったことができるツールです。AssetBundle Browser はGithub もしくはアセットストアから入手可能で、Unity 5.6以上のバージョンで動作します。

ABGTで設定したアセットバンドルに含まれるファイルをチェックしたい時に、ABGTを AssetBundle Browser と共に使うことができます。

AssetBundle Browser とABGTをプロジェクトにインストールすると、AssetBundle Browserのドロップダウンメニューから「AssetBundles(GraphTool)」を選択できるようになります。これを選択する事で、ABGTで設定したアセットバンドル設定をチェックすることができます

なお、GraphTool側のアセットバンドル設定はグラフによって設定されているものなので、、AssetBundle Browser からは閲覧のみが可能で、編集をすることはできません。

バージョン管理システムを使う

ABGTは利用時にいくつかのファイルやフォルダを生成します。

  • Cache: グラフによって作られたファイルや設定を保存します。Cacheフォルダの削除は関連するファイル(たとえばグラフによって作られたPrefabなど)の再作成を呼び起こしますが、フォルダの削除自体はプロジェクトに問題を起こすことはありません。(Cacheフォルダはメニューから選択して削除することもできます)
  • SavedSettings: インポート設定など、プロジェクトで保持しておくべき重要な設定を保存します。作成したグラフが適切に動作するためには、このフォルダ以下のファイルはバージョン管理され、プロジェクトの一部として共有される必要があります。
  • SettingFiles/AssetReferenceDB: アセットの軽量なメタデータを保持するデータベースです。このファイルを削除しても必要な情報はAssetDatabaseおよびアセット自身から作り直されるので無害です。このファイルを共有する意味はなく、バージョン管理的には無視されるべきです。
  • SettingFiles/AssetBundleBuildMap:現在のアセットバンドルの振り分け設定を保持します。AssetBundleBrowser等で利用されます。このファイルもグラフから自動的に作られるので共有する必要はありません。
  • SettingFiles/BatchBuildConfig: Batch Build Windowで作成したGraphCollection設定を保存します。このファイルはバージョン管理され共有されるべきものです。

ABGTをプロジェクトの一部としてバージョン管理システムに入れる場合、下記のガイドを参考にしてください。

コミットすべきでないもの(無視すべきファイル)

  • Cache 以下の全てのファイル
  • AssetReferenceDB
  • AssetBundleBuildMap

コミットすべきもの(バージョン管理すべきファイル)

  • Everything under SavedSettings
  • SettingFiles/BatchBuildConfig