LoginSignup
9
6

More than 5 years have passed since last update.

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

Posted at

この内容は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

9
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
6