【UE5】編集内容が保存されるEUWを作る

UE5 には Editor Utility Widget(以下、EUW) というエディタ上で使えるGUIツールを作成できる機能があります。

EUWはかなり便利な機能なのですが、編集内容が保存されないという特徴があります。
今回はUE5の標準機能のセーブスロットを活用してGUIの編集状況を保存したいと思います。

公式ドキュメント:
docs.unrealengine.com

1.EUWの作成

まずは簡易的なEUWを作成しました。

Bool, Int, Material の変数を用意し、Details View で表示しています。

2.セーブゲームクラスの作成

次にセーブゲームクラスを作成します。
変数にはEUWで保存が必要なものを用意します。今回はEUWと同じ3つの変数を用意しました。

公式ドキュメント:
docs.unrealengine.com

3.セーブ、ロード処理の作成

EUWの起動時(Construct)にロード、終了時(Destruct)にセーブする処理を組みました。




一般的な組み方で組んでいますが、Constructは起動時だけでなく何度も走るイベントなので DoOnce で初回のみ処理するようにしています。
また、セーブスロットが存在しない場合はキャスト処理で弾かれています。




セーブ時はセーブスロットが存在しない場合は新しく生成するようにしています。




編集内容が保存されるようになりました!



まとめ

実装は簡単ですが、効果は大きいと思いますので参考になれば幸いです。
応用すれば変数の値だけでなく、Widgetの状態も保存可能です。

今回はセーブスロットを活用しましたが、Jsonなどのファイルに保存しても同じようなことが可能です。

また、1つのEUWに依存せずもっと汎用的なものを作ろうとするのであれば、FPropertyなどを活用しプロパティを解析する必要があるかと思います。こちらはなかなか実装が大変そうですが...


UE Version : 5.2.1