エンジニア・非エンジニア問わずアセットを納品する場合、そのアセットに対してバリデーションをかけた方がプロダクトの安全性は向上します。
UnityEditorを通じてアセットを作成する場合、AssetDatabaseを通して様々なデータを取得できるため、バリデータを作成するのはとても簡単です。
【Unity】効率よくアセットバリデーションを作成するためのTestRunnerの活用法 - Qiita
以前TestRunnerを使ってサクッとバリデーターを作成した記事を執筆しました。
今回はタイトルの通り任意のMaterialが参照する全てのオブジェクトのパスを取得する必要が出てきたので、その備忘録を残します。
GetDependenciesメソッドを使用
結論から書くとGetDependenciesメソッド
を使いました。
// Materialを指定
var materialPath = AssetDatabase.GetAssetPath(material);
// 指定したMaterialに紐づくオブジェクトのパスの配列を取得
var referencePaths = AssetDatabase.GetDependencies(materialPath);
上記のようなソースコードで指定したMaterialが参照するテクスチャ、シェーダ等のパスが取得できます。
取得したパスを何に使うのか?
今回取得したかった理由は、アプリに含まれるマテリアルが参照するオブジェクトがAssetBundleとしてビルドされるオブジェクトかどうかをチェックするためでした。
※間違えてAssetBundleのアセットをアプリ内で参照しちゃっていて、実機で実行するとピンク色になるアレです
この情報を元にバリデーターを作成していくという流れになります。
環境
- Unity 2019.4.11.f1