Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away