Chapter 44

◽ 特定フォルダ内のアセットを参照していないかチェック

ポコ太郎
ポコ太郎
2022.01.20に更新

開発中のアセットが特定のフォルダ内のアセット(テスト用のフォルダ・無料アセットを格納しているフォルダなど)を参照してしまっているかどうかをチェックしたい場合の BP の構成について、ここでは「Developers」フォルダを例に解説しています。

こちらの記事を参考にさせていただきました。

https://kinnaji.com/2020/01/11/assetreferencers/

BP の構成

Editor Utility Widget』を作成して図のように組みます。

肝心の Developers フォルダ内のパスのアセットがあるかチェックする処理は再帰的に処理するために「📘 CheckAssetsInDevelopersFolder」という名前の関数にしています。また、ヒットしたアセットを格納するための変数「ErrorAssets」を追加、処理の最初に空にしています。

CheckAssetsInDevelopersFolder 関数の中身

全体図はこちらですが、順に解説します。

まずは「📘 Get Dependencies」関数で、今調べているアセットが参照しているアセットを取得して「📓 For Each Loop」で1つずつさらに調べていきます。

アセットのパスに「/Game/Developers」が含まれているか「📗 Contains (String)」で調べて、含まれている場合に配列に追加してログにその旨の一文を出力しています。

最後に Developers が含まれている/いないに関わらず、この関数自身を関数内に追加してさらに参照しているアセットを再帰的に調べていきます。

そうすることで、スタティックメッシュが参照しているマテリアルは大丈夫でも、そのマテリアルが Developers 内のテクスチャを参照している‥といったケースも調べることができます。

BP を実行

では実際に試してみたいと思います。

Developers フォルダ内にはマテリアルとマテリアルが使っているテクスチャがある状態です。

そして調べるのは Developers 内のマテリアルを使用したスタティックメッシュです。

ボタンを押すと‥

Developers 内のアセットだった際に 📘 Print String が動作しています。

あとは配列の中身を CSV に出力するなりすればOKです。