Let's Enjoy Unreal Engine

Unreal Engineを使って遊んでみましょう

UE4 Blutilityという名前が4.23からなくなるようなので色々調べてみた

これまでお手軽なエディター拡張の手段として、Blutilityという機能があることを紹介してきました。

unrealengine.hatenablog.com

unrealengine.hatenablog.com


現在4.23のPreview 3まで公開されていますが、色々と手が入っており、そもそもBlutilityという名前自体が使われなくなったようです。どうやら公式ドキュメントにも2019年7月28日現在、それについて言及されている部分はありません。4.23 Previewでこれについて言及されているのは公式フォーラム内の以下の内容のみです。

forums.unrealengine.com

Editor Utility Blueprints Updates. Utility Blueprints have been updated to improve the Editor’s extensibility with Blueprints, bringing Blueprints extensibility more in line with Python and C++ extensibility.

では具体的にどう変わったのかを調べてみました。

実験的機能ではなくなった

4.22までBlutilityは実験的機能として提供されていたので、エディター環境設定からチェックをオンにする必要がありました。

f:id:alwei:20190728101442p:plain

これが4.23ではこの項目自体がなくなり、最初から利用可能な状態になります。

f:id:alwei:20190728101627p:plain

4.23からは"Editor Utility Blueprint"という名前で最初からBlutilityに該当していたアセットが作成可能となりました。

Blutilityという名前の廃止とシェルフの削除

4.23からはエディター内にはどこにもBlutilityという名前が見当たりません。※ソースコード内にはBlutilityという名前が未だに使われています

f:id:alwei:20190728101859p:plain

更にウィンドウから新たに開くことができた、"ブループリント ユーティリティ シェルフ"も削除されました。画像は4.22のものです。おそらくこの機能を使っていた人がほとんどいなかったからでしょう。(私も使ってませんでした)

GlobalEditorUtilityBaseの非推奨化

これまでBlutilityを作成する際に、最初にGlobalEditorUtilityBaseを親クラスとして継承する必要がありました。これが4.23からは非推奨化(DEPRECATED)しました。

f:id:alwei:20190728102925p:plain

画像は4.22のもの。

同様にアクターとして配置可能だったPlacedEditorUtilityBaseも非推奨となりました。最も後者は存在を知っている人も少ないかもしれません。これらが非推奨となったことで、エディター内では通常の方法では選択することが出来なくなったので、実質削除されたと思ってよさそうです。

では4.23からはどうやってBlutilityに相当するものを作成するの?という疑問になるかと思います。

新規のEditorUtilityクラス群が追加

上記クラスの非推奨化に伴い、新規のEditorUtilityクラスが沢山追加されました。以下にあるものが利用可能です。

f:id:alwei:20190728103758p:plain

  • EditorUtilityExtention -> 右クリック時にAssetやActorにスクリプトアクションを追加するためのインターフェース
  • EditorUtilityObject -> ObjectクラスにEditorUtility機能を追加したもの
  • EditorUtilityActor -> ActorクラスにEditorUtility機能を追加したもの
  • EditorUtilityActorComponent -> ActorComponentクラスにEditorUtility機能を追加したもの
  • EditorUtilityCamera -> CameraActorクラスにEditorUtility機能を追加したもの

現状では上記のもので全てのようです。これまで"GlobalEditorUtilityBase"に該当していたものは"EditorUtilityObject "になり、"PlacedEditorUtilityBase"は"EditorUtilityActor"をそのまま置き換えてしまったものと考えてよさそうです。

"EditorUtilityExtention "は"AssetActionUtility"や"ActorActionUtility"といった、アセットやアクターを右クリックした際にコンテキストメニューに出現するスクリプトアクションを追加するためのインターフェースです。中身を覗く限りではインターフェースとなっていますが、現状ではC++側での利用に留まっており、ブループリント側で利用することはなさそうです。

EditorUtility機能について

ここまで話してきたEditorUtility機能ですが、これを追加すると何が出来るかと言うと、ブループリント上からエディターの様々な機能にアクセスできる大量のノード群が追加されます。

f:id:alwei:20190728112213p:plain

"Development Editor"内のノード。

f:id:alwei:20190728111214p:plain

"Editor Scripting"内のカテゴリー一覧。

特に"Level Utility"や"Asset Tools"カテゴリーには自動化や配置のための便利な機能が沢山用意されています。

f:id:alwei:20190728111654p:plain

また、"Material Editing"カテゴリーも追加され、マテリアル内の操作やマテリアル自体の自動生成や自動化が可能になります。こちらも非常に有用なので活用しましょう。

EditorUtilityWidgetも同様

4.22で追加された、UMGエディターを使ってエディター拡張用のUIが作成可能な"EditorUtilityWidget"も同様のEditorUtility機能が追加されます。こちらは4.22と大きな変更もなくこれまでと同様に扱えますので、ガンガン活用しましょう!

f:id:alwei:20190728112603p:plain