はじめに
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 が追加され、アセットの作成やレベル内への配置をブループリントで行うことができるようになります
##マテリアル、マテリアルインスタンスを作成
マテリアルを新規作成し名前をMT_Base
とします
作成したマテリアルを開く > 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 ドキュメント
エディタのスクリプティングと自動化
ブループリントを使用してエディタをスクリプト化する
スクリプト アクション