rn.log

備忘録など

【UE4】経過時間を表示するテキストを画面に出してみる

はじめに

UE4を触っていた時に出てきた疑問。
UIを画面に表示させるにはどうすればいいんだろう? ゲーム内のスコアとか画面に表示させたいな....」

そこで今回はUIを作り方の勉強の一環として、ゲーム開始からの経過時間を表示するテキストを画面に出す方法をまとめてみました。

作ったもの

ゲーム再生からの経過時間を表示するテキストを画面に出してみました。
f:id:r-ngtm:20180207113751g:plain

作成手順

STEP1. Widgetを作成する
STEP2. WidgetにTextを設置する
STEP3. ブループリントを使ってゲーム開始時にWidgetを画面に出す
STEP4. 経過時間をTextへ反映するイベントグラフを組む

STEP1. Widgetを作成する

コンテンツブラウザの右クリックメニューからWidgetを作成します
f:id:r-ngtm:20180207110020p:plain

名前は UI_HUDとしておきます。

f:id:r-ngtm:20180207110107p:plain

STEP2. WidgetにTextを設置する

作成したWidgeアセットを開き、ドラッグ&ドロップでTextを配置します。

f:id:r-ngtm:20180207110756g:plain

Textの名前は HogeText としておきます。

STEP3. ブループリントを使ってゲーム開始時にWidgetを画面に出す

レベルブループリントを開き、以下のイベントグラフを組みます。

f:id:r-ngtm:20180207110337p:plain

ウィジェットを作成ノード」Widgetを作成し、「Add to Viewportノード」を使ってWidgetを画面に追加しています。

確認してみる

この状態でゲームを再生すると、以下のような画面になります。

f:id:r-ngtm:20180207111207p:plain

Widgetが画面に出ていることが確認できます。

STEP4. 経過時間をTextを反映するイベントグラフを組む

次に、経過時間をTextに反映させるようにします。

WidgetHogeTextを選択し、詳細パネルでContent/Textのバインドボタンをクリックして「バインディングを作成」を選択します。
f:id:r-ngtm:20180207111934p:plain

イベントグラフが作成されるので、リターンノードにGet Game Time in Secondsノードを接続します。

確認してみる

この状態でゲームを再生すると、テキストに経過時間が反映されるようになります。

f:id:r-ngtm:20180207112749g:plain

ゲーム内経過時間を表示するテキストを作ることができました。

まとめ

・UIを作るにはWidgetアセットを作成すると良い

Widgetアセットを画面に表示させるにはウィジェットを作成ノード」Widgetを作成し、「Add to Viewportノード」を使ってWidgetを画面に追加する。

Widget表示を動的に変更するにはバインディングを作成すると良い

バインディングで作成した関数のリターンノードに渡したデータはUIに反映される

参考

Unreal Engine | プロパティのバインディング



豆知識: バインディングには変数も設定できる

バインディングにはWidgetのイベントグラフで定義した変数も使用できます。
f:id:r-ngtm:20180207115832p:plain

f:id:r-ngtm:20180207115908p:plain