UE4 ウィジェットのテキストを別のクラスから変える

良い例が思いつかなかったので、今回はキャラクターがジャンプしたら、
ウィジェット上にJumpと表示するようにします。
キャラクターの体力などを表示する。みたいな状況で使える(UE4初心者並みの想像力)

一番下に全体図を置いているので、わかる人はそこまで飛んでください。

ThirdPersonBPからプロジェクトを作成。

f:id:pto8913:20191030225946p:plain

コンテンツブラウザからブループリントウィジェットを作成。

f:id:pto8913:20191030223741p:plain

ウィジェットを開いて、適当にテキストを置いておく。

f:id:pto8913:20191030224318p:plain

テキストをクリックすると、画面右側に詳細が出るので、そこからバインディングを作成

f:id:pto8913:20191030224434p:plain

以下のような画面になると思います。
うまくできたら画面左から変数を追加してください。
このとき変数の右側をクリックして目が開いた状態になるようにしてください。
これをすることで外部からNewVar_0変数を読み出せるようになります。

f:id:pto8913:20191030224745p:plain

先ほど追加した変数の型をtextにします。

f:id:pto8913:20191030225135p:plain

変数をドラッグアンドドロップしてください。
このときGet Text Set Textと表示されるのでGet Textとしてください。

f:id:pto8913:20191030225332p:plain

これでひとまずウィジェット部分は終わりです。
コンパイルして保存して閉じてもらって構いません。

コンテンツブラウザからThirdPersonCharacterBPを開いて、イベントグラフに移動します。

最初は、プレイ画面にウィジェットを表示させるところから。

イベントグラフを右クリックし、イベントBeginPlayを追加します。

f:id:pto8913:20191030231909p:plain

イベントBeginPlayからにょきにょきと伸ばし、Create Widgetを選択
f:id:pto8913:20191030232448p:plain

Create Widgetからクラスを追加。上で作った、ウィジェットを選択してください。
f:id:pto8913:20191030232506p:plain

Create Widgetからにょきにょきと伸ばして、Add To Viewportを選択
f:id:pto8913:20191030232513p:plain

コンパイルして実行すると、何も表示されません。
はい、最初に作ったウィジェットの変数NewVar_0に何も設定してないからです。

ThirdPersonCharacterBPのイベントグラフを開いたときにデフォルトでいろいろ置いてあると思います。
その中からインプットアクションJumpを引っ張ってきます。
引っ張ってきたら、最初に作ったウィジェットの変数NewVar_0Setで配置します。

f:id:pto8913:20191030234436p:plain

f:id:pto8913:20191030234903p:plain
こんな感じで配置したらおしまい。
(注: これは後々、スパゲッティになる人の書き方です。)
下のほうにきれいに直したブループリントを置いています。

コンパイルしてプレイ。
ジャンプキーはスペースバーで設定されていると思います。

f:id:pto8913:20191030234939p:plain

うまく表示されましたでしょうか。
スペースバーを押している間画面にJumpと表示されるはずです。

かなり雑に説明したのでわかりにくかったらごめんなさい。

最後に全体図を置いておきます。

f:id:pto8913:20191030235541p:plain
丸い点はRerouteノードです。
スパゲッティにならないようにするために作られた(?)ノードだと勝手に思っています。(よくわかってない)
Jumpを囲っている白色の四角はコメントです。
複数のノードを囲んで右クリックして一番下にあるのがそれです。
特定のノードにコメントをつけたいときは、つけたいノードを右クリックして一番下。

f:id:pto8913:20191030235759p:plain
f:id:pto8913:20191030235816p:plain