メインコンテンツへスキップ
  1. Blog/

ObjectMixerを使ってLevel上のActorのPropertyを一括編集する

ObjectMixer で、Level 上の Actor のプロパティを編集する方法を紹介します

UE5.1 から、LightMixer という新しい UI が追加されています
(UE5.0 にある Env.LightMixer とは別物です)

実はこの LightMixer、ObjectMixer という汎用の編集 UI と、LightComponent 用の ObjectFilter の組み合わせで実現してあり
ObjectFilter を自作すれば、任意の Actor を一覧化し編集することができます

※ 記事執筆時点でLightMixerはベータ機能です
思い通りに動かない場合や、機能が変更される可能性があります

使い方
#

Filter クラスの作成
#

まずは ObjectFilter を作成します

新規 Blueprint で、親クラスに ObjectMixerBlueprintObjectFilter を選択して作成します

ObjectFilterを作成

対象クラスの設定
#

Filter クラスを開き、 GetObjectClassesToFilter をオーバーライドしましょう ここで指定するクラスは、Actor だけではなく、Component で指定することもできます

オーバーライド

ObjectMixer で使う
#

LightMixer を表示し、設定から Open Generic Object Mixer Instance を選択すると、ObjectMixer が表示されます

ObjectMixerの表示

ObjectMixer の設定で、ObjectFilter Class に先程作成したクラスを設定すると、 GetObjectClassesToFilter に指定した Class に関係する Actor が ObjectMixer 上に表示されます

Filterの設定

一覧のヘッダー部分にある三点マークをクリックすると、表示するプロパティを選択できます

プロパティの表示

その他
#

各種関数の設定
#

ObjectFilter は、各関数をオーバーライドすることでカスタマイズします 主なものは以下の通りです

関数名概要
GetObjectClassesToFilterObjectMixer の対象とするクラス(Actor または Component)
GetObjectClassesToPlaceObjectMixer の Add ボタンで作成できるクラス(Actor)
GetColumnsToShowByDefaultデフォルト表示する項目(プロパティ名)
GetForceAddedColumns常に表示する項目
GetColumnsToExclude表示しない項目(プロパティ名)
GetObjectMixerPropertyInheritanceInclusionOptions親または子のプロパティを含んで表示するか
GetObjectMixerPlacementClassInclusionOptionsAdd で作成するクラスの検知パターンを指定する

表示するプロパティについて
#

GetObjectMixerPropertyInheritanceInclusionOptions をオーバーライドすると、対象の親や子のプロパティも表示できるようになります
IncludeAllParentAndChildren あたりに設定しておくと、ほぼすべての対応するプロパティが表示されます

トラブルシューティング
#

出ない Property があるんだけど…
#

表示できない Property があるようです
よく使うものとしては Vector は表示されません
おそらく構造体に関しては編集できないと思われます

Add が動かない
#

現時点で Add のところに任意のクラスを出す方法が見つかってません
AActor は検知されるのに、作成したクラスは検知できてない感じがします
一応ベースである LightMixer はまだベータ機能なので…

設定値はどこに…?
#

表示する列などを編集した場合、設定値はプロジェクトフォルダ下の Saved/WindowsEditor/ObjectMixerSerializedData.ini に保存されます
表示列を変えて以降の表示は、ここに保存された内容で表示されます

参考
#

UnrealEngine5.1 リリースノート

関連記事