書いてるときに あけてました おめでとう
UE4いじり初めて1年ちょっと・・・ かな・・・?
そのレベルの人が色々調べてやってみたことを適当にメモっておくよ
Editor Utility Widgetでエディタ拡張がすっごい作りやすくなったけど
そのUIを起動するときに一々アセットを右クリックしてやったり分かりにくいメニューから起動するのってなんかね
自分で追加したメニューから起動したいやん?
ってことで
UIをC++から起動する方法のメモ
ちなみにUE4.24.1でのみ確認してます。
独自のメニューを追加
http://historia.co.jp/archives/370/
みんな大好きヒストリアさんのところがおすすめだぞ。
Editor Utility WidgetでUIを作成
https://qiita.com/EGJ-Kaz_Okada/items/9f530db3b53d0fde3f20
おかずさんのところがおすすめだぞ。
C++でEditor(略を表示する
ここからが本番
まずはアセットをロードする。
auto WidgetBlueprint = LoadObject<UBlueprint>(NULL, TEXT("パス"), NULL, LOAD_None, NULL);
普通にUBlueprintで読み込んでおけばOK
それをUEditorUtilityWidgetクラスにキャスト
TSubclassOf<UEditorUtilityWidget> WidgetClass = (TSubclassOf<UEditorUtilityWidget>)WidgetBlueprint->GeneratedClass;
そしてこれを使ってCreateWidgetする
UWorld* World = GEditor->GetEditorWorldContext().World();
UEditorUtilityWidget* CreatedUMGWidget = CreateWidget<UEditorUtilityWidget>(World, WidgetClass);
んで生成できたらSWindowにSetContentする
Window->SetContent(CreatedUMGWidget->TakeWidget());
MyWindow.Pin()->BringToFront(); // 最前面へ
たったこれだけで独自のメニューからEditor Utility Widgetで作ったUIを起動できるようになる。
まぁ こんなことしなくてもメニューに追加されはするので
あくまでもわかりやすくするためだぁね
クラス設定とかからこのメニュー名設定できれば良いんだけど
さらに強いて言うなら
Unityのエディタ拡張みたいな感じでやれれば良いんだけどね・・・
まぁ しゃーない
っと こんな感じで
書ける範囲で色々書いていけると良いな
では ノシ