※この記事で使用しているUnrealのVersionは04.24.1 です。

※今回はプロジェクトのテンプレート「Third Person」を使用しています。

※この記事のサンプルプロジェクトは以下URLにアップされています。
サンプルプロジェクト

Assetの参照をAsset Registryで取得 レベル【★★】

Content Browser上で、アセットを右クリック→「Reference Viewer…」を選択することで、そのアセットの依存関係を確認することができます。

私もよく思うのですが、この依存関係をBPで手軽にとってこられたらいいな…と思っていたら、「Asset Registry」インターフェースに4.23からしれっと「Get Referencers」と「Get Dependencies」という二つの関数が追加されていました。知らずにC++で実装してました…。

「Referencers」の方が、Reference Viewerでいうところの左側の「依存されている」 アセット で、「Dependencies」の方が、右側の「依存している」アセットになります。

また、「ReferenceOption」に「Asset Registry Dependency Options」構造体を設定して、参照の種類(強参照、弱参照、PrimaryAssetLabelなどでのManagement参照)をそれぞれ含むかどうかを設定することができます。

引数にPackagePathを入れることで、その参照アセットが戻り値Name型の配列にPackagePathで返ってきます。

以下はEditor Utility Blueprintの「Asset Action Utility」で、選択しているアセットの依存関係をログに出力するブループリント。

これをScrepted Actionで実行すると、↓のような結果になります。

このように、アセットの依存関係が出力されているのがわかります。

さて、これが何に使えるかというと、年末にも関わらずおかずさんが作ってくれた「UE4.23から入った「Editor Validator Subsystem」を使って、アセット保存時などで走るチェック処理(Validate Assets)を拡張しよう!」を使って、参照してはいけないフォルダのアセットをを参照しているかのチェックができます。

では実際に作ってみましょう。

Content Browser左上の「Add New」から「Editor Utilities」→「Editor Utilitiy Blueprint」を選択します。

出てきた親クラス選択画面から、「Editor Validator Base」を選択して「Select」を押しましょう。

作成したらアセットを開き、「MyBlueprint」ウィンドウ内の「Functions」の「Override」から「Can Validate Asset」を選択してオーバーライド関数を作成しましょう。

そして、作成したら今回は以下のように組みます
(/Game/ThirdPersonBPフォルダ内にあるアセットを対象にチェックする)

できましたら、同じく「MyBlueprint」ウィンドウ内の「Functions」の「Override」から「Can Validate Asset」を選択してオーバーライド関数を作成しましょう。

中身はこんな感じです↓
( /Game/TestFolderというパスの中にあるアセットが参照されていないかを調べる。)

出来ましたら、確認のため「 TestFolder」というフォルダを作ります。

そしてその中に、適当なクラスを作成します。(記事ではActorクラスを作成しました)

これで対象アセットの準備はOKで、今度は「/Game/ThirdPersonBP」内のアセットに今作ったアセットの依存関係を作ります。

手っ取り早くやるなら「/Game/ThirdPersonBP/Blueprints」にある「 ThirdPersonCharacter 」BP内にクラス変数を作成し、先ほど作成したActorクラスを設定します。

これでセーブすることで、「ThirdPersonCharacter」が「BP_Test」に依存するような関係になります。

これですべての準備がOKです。

Editor Validatorを反映させるために一度エディターを落としましょう。(もしくは UE4.23から入った「Editor Validator Subsystem」を使って、アセット保存時などで走るチェック処理(Validate Assets)を拡張しよう! にあるEditor Validator SubsystemにEditor Utility Blueprintを登録(新規作成時のみ)の項目を行うことでエディターを落とさずに確認できます)

出来ましたら、「ThirdPersonCharacter」を右クリック→「Asset Actions」→「Validate Asset」を選択しましょう。

うまくいけば、エラーを返してくれたと思います。

参照周りはパッケージに大きな影響を与えるので、早いうちにこのようなチェッカーを作ることをお勧めします。

以上となります。

※この記事のサンプルプロジェクトは以下URLにアップされています。
サンプルプロジェクト

「【UE4】Assetの参照をBPで取得する【★★】」に1件のコメントがあります

  1. ああ、神様! 驚くばかり! あなたは私の大きな問題を解決しました! どうもありがとう、弓。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です