1. T_Sumisaki

    Posted

    T_Sumisaki
Changes in title
+BlutilityでStaticMeshのMaterialを一括置換するコマンドを作る
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,67 @@
+**この内容はUE4.20Preview1時点のものです**
+
+UE4.20から、Blutilityも機能追加され、`ActorActionUtility`と`AssetActionUtility`を親クラスに選択できるようになりました。
+今回は`AssetActionUtility`を使って、StaticMeshのマテリアルを一括置換するエディターコマンドを実装します。
+
+
+# Blutilityの有効化
+
+単に上記クラスを継承しただけではBlutilityにはなりません。
+`Editor Preference > Experimental`でBlutilityを有効にしましょう。
+
+![image.png](https://qiita-image-store.s3.amazonaws.com/0/117589/a72b25db-c767-bbd2-c825-0aeab87f89d5.png)
+
+# Blutilityクラスの作成
+
+コンテンツブラウザ上でコンテキストメニューから`Blueprints > Blutility`を選択します。
+
+![image.png](https://qiita-image-store.s3.amazonaws.com/0/117589/23d2d759-b614-8752-5c34-941e20ac39c9.png)
+
+親クラスは`AssetActionUtility`を選択します
+
+![image.png](https://qiita-image-store.s3.amazonaws.com/0/117589/cf0091ea-3a55-e147-f8a2-d1db0666ad14.png)
+
+# 実装
+
+今回の仕様は以下のとおりです
+
+- DataTableから定義を読み込む
+ - 定義は「置換前のMaterial名」と「置換先のMaterial」の構造体
+- 選択されたStaticMeshの全Materialを探索し、定義に一致するMaterial名であれば、Materialを置換する
+
+![image.png](https://qiita-image-store.s3.amazonaws.com/0/117589/049c88e7-bcbc-6565-af2c-d03d630b9e93.png)
+
+![image.png](https://qiita-image-store.s3.amazonaws.com/0/117589/3a200de9-687c-aa3f-f321-49ab43e5c45a.png)
+
+## コマンドの実装
+
+コマンドのBlueprintは以下のとおりです
+
+![image.png](https://qiita-image-store.s3.amazonaws.com/0/117589/8512fc5e-a671-c62e-0bb4-abf3d14d11c3.png)
+
+データテーブルのロード等に関しては特に言うことはは無いですが、
+`Get Selected Assets`ノードを使えば、コンテンツブラウザ上で選択したAssetの配列を取得できます
+
+![image.png](https://qiita-image-store.s3.amazonaws.com/0/117589/d7a5bcfa-9cc2-48e1-0d7d-0086eca9881f.png)
+
+
+## コマンド対象の指定
+
+今回はStaticMeshを対象にするので、他のAssetでこのコマンドが出たら困ります
+Blutilityの`Get Supported Class`をOverrideすることで、このBlutilityの対象をStaticMeshに限定します
+
+![image.png](https://qiita-image-store.s3.amazonaws.com/0/117589/cf4a3c09-0855-a3b7-d267-ebd9f8d70dae.png)
+
+
+# 使い方
+
+Materialを一括置換したいStaticMeshを選択し、コンテキストメニューを開きます
+コンテキストメニューの`Scripted Actions`に、今回作ったFunctionがあるので、クリックして実行しましょう
+
+![image.png](https://qiita-image-store.s3.amazonaws.com/0/117589/ffd7f38a-b1c2-312f-b86b-db65131a84c9.png)
+
+複数のStaticMeshのMaterialが一括置換されました
+![image.png](https://qiita-image-store.s3.amazonaws.com/0/117589/eb76e565-2c23-bf58-a544-2dc501fe3bb4.png)
+
+
+