UE4
UnrealEngine4

BlutilityでStaticMeshのMaterialを一括置換するコマンドを作る

More than 1 year has passed since last update.

この内容はUE4.20Preview1時点のものです

UE4.20から、Blutilityも機能追加され、ActorActionUtilityAssetActionUtilityを親クラスに選択できるようになりました。

今回はAssetActionUtilityを使って、StaticMeshのマテリアルを一括置換するエディターコマンドを実装します。


Blutilityの有効化

単に上記クラスを継承しただけではBlutilityにはなりません。

Editor Preference > ExperimentalでBlutilityを有効にしましょう。

image.png


Blutilityクラスの作成

コンテンツブラウザ上でコンテキストメニューからBlueprints > Blutilityを選択します。

image.png

親クラスはAssetActionUtilityを選択します

image.png


実装

今回の仕様は以下のとおりです


  • DataTableから定義を読み込む


    • 定義は「置換前のMaterial名」と「置換先のMaterial」の構造体



  • 選択されたStaticMeshの全Materialを探索し、定義に一致するMaterial名であれば、Materialを置換する

image.png

image.png


コマンドの実装

コマンドのBlueprintは以下のとおりです

image.png

データテーブルのロード等に関しては特に言うことはは無いですが、

Get Selected Assetsノードを使えば、コンテンツブラウザ上で選択したAssetの配列を取得できます

image.png


コマンド対象の指定

今回はStaticMeshを対象にするので、他のAssetでこのコマンドが出たら困ります

BlutilityのGet Supported ClassをOverrideすることで、このBlutilityの対象をStaticMeshに限定します

image.png


使い方

Materialを一括置換したいStaticMeshを選択し、コンテキストメニューを開きます

コンテキストメニューのScripted Actionsに、今回作ったFunctionがあるので、クリックして実行しましょう

image.png

複数のStaticMeshのMaterialが一括置換されました

image.png