はじめに
UE4はアセットの作成やレベル内への配置をブループリントで自動化することができます
ブループリントが便利なのは、プロジェクトのランタイム ゲームプレイの作成だけではありません。Unreal Editor 内でプロジェクト コンテンツを操作するときにも、非常に効果的なツールです。エディタ内でブループリント グラフをオンデマンドで実行して、アセットを使用したり、レベル内にコンテンツを配置したり・・・
この機能を使って色違いのマテリアルインスタンス139個を自動で作成してみました

環境
Unreal Engine 4.24.3
Unreal Engine 4.25.0(2020/5/6 追記)
材料の準備
Editor Scripting Utilities プラグインを有効にする
設定 > プラグイン から Editor Scripting Utilities を有効にしエディタを再起動します

このプラグインを有効にすることでブループリントのノードの選択肢に Editor Scripting が追加され、アセットの作成やレベル内への配置をブループリントで行うことができるようになります

マテリアル、マテリアルインスタンスを作成
作成したマテリアルを開く > VectorParameter を作成し名前をBaseColorにして ベースカラー につなげたらマテリアルを保存します

コンテンツブラウザで MT_Base を右クリック > マテリアルインスタンスを作成 をクリック。作成したら名前をMI_Baseにします

自動作成するマテリアルインスタンスの保存場所としてColorMaterialsというフォルダを作成します

色テーブルをCSVで作成
下記のようなCSVファイルを作成しColorTable.csvという名前で保存します

構造体を作成してCSVファイルを読み込む
コンテンツブラウザでSTR_ColorTableという名前で構造体を作成 > 下記のように項目を追加して保存します

ColorTable.csv をコンテンツブラウザにドロップするとダイアログが表示されるので、データテーブルの列の種類に STR_ColorTable を選択しOKをクリックします

ブループリントの作成
エディタで呼び出せるカスタムイベントを作成する
コンテンツブラウザの新規作成で Editor Utilities > Editor Utility Blueprint を選択します

BP_MI_Create を開く > カスタムイベントを作成しCE_MI_Createという名前にし、エディタで呼び出すにチェックを入れます

BP_MI_Createを一旦保存 > コンテンツブラウザ内のアイテムを右クリックすると Scripted Actions というメニューがありその中に CE MI Create ができていることを確認します。ここからイベントを呼び出すことができるようになります

確認出来たら再度 BP_MI_Create を開きます
マテリアルインスタンスを自動作成する
Get Data Table Row Names で ColorTable を取得し、For Each Loop と 「テーブル行を取得」 をつなげていきます

外側の列 ピンからワイヤーを引き出し STR_ColorTable を分解します

Append ノードでフォルダパス /Game/ColorMaterials/ とColorNameを合体してマテリアルインスタンスの保存パスを作成します
R,G,Bを255で割った値を使ってMakeColorで色を作成します

Duplicate Asset ノードを作成し Source Asset Path を /Game/MI_Base/ として複製元に準備作業で作成したマテリアルインスタンスを指定します

Cast To MatrialInstanceConstant と Set Material Instance Vector Parameter Value をつなげます。
Parameter NameにBaseColorと入力します

これでブループリントが完成です
エディタからブループリントを実行
コンテンツブラウザのアイテムを右クリックし Scripted Actions > CE MI Create をクリック

ColorMaterials フォルダに139個のマテリアルインスタンスが自動作成されました!

まとめ
作成したブループリントの全体像
https://blueprintue.com/render/57me-i7-

スクリプティングによりエディタ内作業を自動化して大幅な効率化やミスの防止に役立ちそうです!
参考
Unreal Engine 4 ドキュメント
エディタのスクリプティングと自動化
ブループリントを使用してエディタをスクリプト化する
スクリプト アクション




