fc2ブログ

凛(kagring)のUE5/UE4とゲーム制作と雑記ブログ

2016 年から UE4 / 2021年から UE5 を触り始めました。勉強したもののメモ用ブログです。ゲーム制作に関するメモや雑記とか色々あります。C++ での Qt、Unity もほんの少しあります。

PREV | PAGE-SELECT | NEXT

≫ EDIT

UE4 エディタ拡張・ウィジェットを変数として扱う・格納する(SAssignNew)

ウィジェットを変数として扱えるようにして、ウィジェット同士の連携をとったりする方法です。
詳しい方法はロジカルビートさんの以下のブログを参考に!

・【UE4】エディタ拡張(インプットボックス編)
http://logicalbeat.jp/blog/875/

エディタで文字列や数値入力が出来るようになったので、
その入力値を使って他のウィジェットやゲーム内のパラメータに動的に反映できるようにしたいです。
そのためには、ウィジェットの値を取得・設定できる必要があります。
そこで、SAssignNewを使用してウィジェットを変数として保持し、
ウィジェットにアクセスできるように変更します。
使い方以下のような形で、今まで使用していたSNew()の部分を置き換えるだけです。

といった感じで、今まで 「SNew」を使っていた部分を「SAssignNew」に変更します。

SNew は「SNew(型名)」でしたが
SAssignNew は「SAssignNew(変数名、型名)」となります。

SNew(SSpinBox< float>)

といったものが

TWeakPtr< SSpinBox< float> > mSpinBoxWidget;
SAssignNew(mSpinBoxWidget, SSpinBox< float>)


といった記述になります。

TWeakPtr< SEditableTextBox> mEditableTextBox;
~省略
+SVerticalBox::Slot()
.AutoHeight()
[
SAssignNew(mEditableTextBox, SEditableTextBox)
.Text(LOCTEXT("EditText", "SEditableTextBox"))
]

こんな感じですね。

変数にしたウィジェットでのアクセスの方法はこんな感じになります。

変数.Pin()->関数()

TWeakPtr< SSpinBox< float> > mSpinBoxWidget;
mSpinBoxWidget.Pin()->SetValue(1234.5f);

こんな感じで関数にアクセスすることができます。

エディタ拡張するにあたっては必須になりそうですね。

| UE4 | 16:23 | comments:0 | trackbacks:0 | TOP↑

COMMENT















非公開コメント

TRACKBACK URL

http://kagring.blog.fc2.com/tb.php/256-a4548c60

TRACKBACK

PREV | PAGE-SELECT | NEXT