この内容はUE4.20Preview1時点のものです
UE4.20から、Blutilityも機能追加され、ActorActionUtility
とAssetActionUtility
を親クラスに選択できるようになりました。
今回はAssetActionUtility
を使って、StaticMeshのマテリアルを一括置換するエディターコマンドを実装します。
Blutilityの有効化
単に上記クラスを継承しただけではBlutilityにはなりません。
Editor Preference > Experimental
でBlutilityを有効にしましょう。
Blutilityクラスの作成
コンテンツブラウザ上でコンテキストメニューからBlueprints > Blutility
を選択します。
親クラスはAssetActionUtility
を選択します
実装
今回の仕様は以下のとおりです
- DataTableから定義を読み込む
- 定義は「置換前のMaterial名」と「置換先のMaterial」の構造体
- 選択されたStaticMeshの全Materialを探索し、定義に一致するMaterial名であれば、Materialを置換する
コマンドの実装
コマンドのBlueprintは以下のとおりです
データテーブルのロード等に関しては特に言うことはは無いですが、
Get Selected Assets
ノードを使えば、コンテンツブラウザ上で選択したAssetの配列を取得できます
コマンド対象の指定
今回はStaticMeshを対象にするので、他のAssetでこのコマンドが出たら困ります
BlutilityのGet Supported Class
をOverrideすることで、このBlutilityの対象をStaticMeshに限定します
使い方
Materialを一括置換したいStaticMeshを選択し、コンテキストメニューを開きます
コンテキストメニューのScripted Actions
に、今回作ったFunctionがあるので、クリックして実行しましょう