【UE4 RTS】11-HUD機能 その1

序文

この記事では、ゲーム ステートのゲーム時間とゲーム日付がブループリント インターフェイスを介してコントロール ブループリントに渡され、正しく表示されるようにするとともに、コントロール上で 12 時間と 24 時間の間で切り替えるゲーム時間表示モードを実現します。ブループリントインターフェイス。

効果

ステップ

1. 試合日の表示

1. ブループリント インターフェイス「RTS_GameTime_IF」を開きます。

「SetGameClock」という名前の新しい関数を追加します

 add 関数の入力と出力は次のとおりです。

引き続き「SetGameCalender」という名前の新しい関数を追加します。

次の入力と出力を追加します

2. コントロール ブループリント「GameTime_HUD」を開きます

 グラフのクラス設定にブループリント インターフェイス「RTS_GameTimeIF」を追加します。

 3. ゲームステート「RTS_GameState_BP」を開きます

「SetCalendar」関数を開きます

 

次のノードを追加します

 関数「SetClock」を開き、次のノードを追加します。

 この時点で、ゲーム状態のゲーム日付とゲーム時間を、ブループリント インターフェイスを通じてコン​​トロール ブループリントに渡すことができます。

 4. コントロールブループリント「GameTime_HUD」に戻り、インターフェース関数「SetGameCalendar」を開きます。

関数の GameDate 入力を変数にプロモートし、出力の Success ピンを True に設定します。

 デザイナーで、日の表示に使用するテキストを選択し、そのコンテンツのバインド関数を作成します。

 バインドされた関数の名前は「Get_TextBlock_Day_GetDay」です。

 関数の内容は以下のとおりです。「DayLocal」と「DayTextLocal」はローカル変数です

 この時点でゲームを実行すると、コントロール「TextBlock_Day」に現在のゲーム日付の日が表示されることがわかります。

5. 新しい列挙型を作成し、「MonthsNamesEnum」という名前を付けます。これは、各月の月名を表すために使用されます。

 次の列挙値を追加します

 6. コントロール ブループリント「GameTime_HUD」に戻り、月の表示に使用されるテキスト コントロールのテキスト コンテンツのバインド関数を作成し、バインド関数に「Get_TextBlock_Month_GetMonth」という名前を付けます。

 「MonthNameRef」という名前の新しい変数、変数タイプ「MonthsNamesEnum」を追加します。

 関数「Get_TextBlock_Month_GetMonth」のロジックは次のとおりです。

 ゲームを実行すると、ゲームの日付に月が表示されます。

ゲームの日付に年を表示するコントロールのバインディング関数をデザイナーで作成し、バインディング関数に「Get_TextBlock_ Year_Get Year」という名前を付けます。

 

 関数のロジックは次のとおりです。ここで、「 YearLocal 」は、配列「GameDate」の 3 番目の要素にプロモートされるローカル変数です。

 この時点でゲームを実行すると、ゲームの日付の年、月、日が正しく表示されることがわかります。

2. 試合時間の表示

1. コントロールブループリント「GameTime_HUD」のインターフェース関数「SetGameClock」を開きます。

入力「GameTime」を変数にプロモートします。

 ボタン「Button_MC」のボタンクリックイベントを追加します。

「IsMilitaryTime」という名前のブール変数をデフォルト値 True で追加します。

 ボタン「Button_MC」のクリックイベントロジックは以下の通りで、主に12時間制と24時間制を切り替えるために使用されます。

 デザイナーに戻り、時間を表示するために使用されるテキスト コントロールのテキスト コンテンツへのバインディング関数を作成します。

 バインドされた関数の関数名を「Get_TextBlock_Hour_GetHour」に変更します。

 まず、配列「GameTime」の 3 番目の要素を取得し、それをローカル変数「HoursLocal」にプロモートします。

文字列型のローカル変数を追加し、「HoursTextLocal」という名前を付け、デフォルト値を 0 に設定します。

 次のノードを追加します

デザイナーでテキスト コントロール「TextBlock_Minute」のテキスト コンテンツに対するバインディング関数を作成します。

 バインドされた関数の名前は「Get_TextBlock_Minute_GetMinute」です。

 まず、配列「GameTime」の 2 番目の要素を取り出し、それを「MinutesLocal」という名前のローカル変数にプロモートします。

 新しいローカル変数「MinutesTextLocal」を作成し、デフォルト値を 0 に設定します。

 引き続き次のノードを追加します

次のテキスト コントロールのテキスト コンテンツのバインド関数を作成します。

 バインドされた関数の名前は「Get_TextBlock_AMOrPM_GetSecondSpecial」です。

 まず、配列「GameTime」の最初の要素を「SecondSpecialLocal」という名前のローカル変数にプロモートします。

 「SecondSpecialTextLocal」という名前の新しいローカル変数を作成します。デフォルト値は 0 です。

 関数に次のノードを追加し続けます。

 デザイナーで、次のテキスト コントロールのテキスト コンテンツのバインド関数を作成します。

 バインドされた関数の名前は「Get_TextBlock_TimeSpace2_SetSpacerSpecial」です。

 ローカル変数「SpecialSpacerLocal」をデフォルト値「:」で作成します。

 関数に次のノードを追加します

 この時点で、現在のゲームの日付と時刻がインターフェイスに正しく表示されていることがわかります。

 ゲームステート「RTS_GameState_BP」の変数「DefaultGameSpeed」と「GameSpeed」を150から1に変更すると、明らかにインターフェイスの時間変化が加速していることがわかります。

おすすめ

転載: blog.csdn.net/ChaoChao66666/article/details/132304631