みなさんこんにちは、Nakaryoです。
今回は Unreal Engineでゲーム画面に制限時間(タイマー)を表示・実装する方法 についてまとめました。
初心者の方でも分かりやすいように手順を整理しましたので、ぜひ参考にしてください。
Step1:ウィジェットブループリントの作成
まずは、ゲーム内に表示させるUIを作成していきます。
①コンテンツフォルダ → UIフォルダ上で右クリックし、
ウィジェットブループリント → ユーザーウィジェット を選択します。

②作成したウィジェットの名前を WBP_Time に変更します。

Step2:制限時間UIのデザイン設定
①デザイナー画面に切り替え、以下の順番でドラッグ&ドロップして配置します。
・キャンバスパネル
・Horizontal Box
・Text Block
・Text Block2

②Horizontal Boxの位置設定を以下の通りに行います。
・アンカー:中央位置

・位置設定

以下の通りになっていれば成功です。
今回は、分かりやすいように画面中央に配置しました。

③Text Block1の設定
階層上のText Block①を選択し、詳細設定を以下の通りに行います。
Text名:Time Limit
Font Size:150

Horizontal Boxの部分にドラック&ドロップし階層を親子関係にします。

④Text Block2の編集作業
Text名:00
Font Size:100

位置設定後、Block1と同様に、階層上でHorizontal Boxにドラック&ドロップをし、
親子関係に設定します。
親子関係後、TextBlock2のpaddingを30に設定します。
以下の通りになっていれば成功です。

Step2:変数の設定
続いてブループリント実装に必要な変数の設定を行います。
WBP_Timeのグラフボタンをクリックし、グラフ編集画面を開きます。
①マイブループリントの変数⊕をクリックし、Float型の変数を2つ用意します。
・変数名:Limit Times
・ Delta Times
②コンパイル後、Limit Times
のデフォルト値を 60秒 に設定します。

Step3:イベントグラフでのノード接続
①作成した Limit Times
と Delta Times
の変数を イベントグラフにドラッグ&ドロップし、Set
を設定します。
Event TickのIn Delta TimeとセットのDelta Timesをノード接続します。

②Limit Times
と Delta Times
の変数を Get
で指定し、以下の通りノード接続を行いコンパイルします。
※”-ノードは[- or subtract]の検索でヒットします。

⚠ 注意点:
この際に 減算を行うため、Limit Timesを上部に配置してください。
逆にすると「経過時間に対して制限時間が減算される」という誤った計算になってしまいます。
Step4:UIタイマーの実装
先ほどのブループリントで実装した制限時間機能をゲーム画面上で表示できるように設定していきます。
①WBP_Timeのデザイナーボタンをクリックします。
②テキストbox”00″を選択した状態で、コンテンツTextの右側のボタンをクリックし、
バインディング作成を選択します。

③新たなグラフが作成がされました。
Return NodeのReturn Valueからワイヤーを展開し、To Textを検索しノード接続
Limit Time変数をget設定し、To Textとノード接続し、コンパイルします。

Step5:ゲーム画面上にUI反映・動作確認
最後にUIタイマーをゲーム画面に反映させていきます。
①レベルブループリントを開きます。

②ノードを以下の流れでつなげます。
Event BeginPlay
⬇
Create Widget(Class → 先ほど作成済みの WBP_Time
を指定)
⬇
Add to Viewport(実行ピン同士とReturn ValueとTargetをノード接続する)

コンパイルします。
③シミュレーションを実行し、画面上に制限時間(タイマー)が正しく表示されていれば成功です。

まとめ
Unreal Engineでのゲーム開発では、制限時間やタイマーをUIで表示させることでゲーム性を高めることができます。
今回ご紹介した手順では、ウィジェットブループリントの作成からイベントグラフでのノード接続、
さらにUIデザインの設定まで一連の流れを解説しました。
ぜひご自身のゲームプロジェクトに取り入れて、プレイヤーに緊張感や戦略性を加えてみてください。