CG関係の備忘録ブログ

主にZBRUSH、blender

UE5 ユーザーインターフェース

参考HP

[UE4] 時間制限のあるゲームの作り方|株式会社ヒストリア

 

UE4でプレイ時間をUserWidgetで表示する

 

成果

www.youtube.com

 

レベルとウィジットでユーザーインターフェースをつくる
レベルフォルダを作成、RM→空のレベルを作成
UIフォルダを作成、RM→空のウィジットを作成

 

ウィジットを開く
パネルのCanvasPanelをドラッグして配置
一般のTextをドラッグして配置、コンテンツ→Textを変更
ボタンをドラッグして配置、Textをドラッグして配置、ボタンの子に設定、PLAYを入力

Back To Title
Clear

 

レベルを開く
レベルブループリントを開く
イベントBeginPlayから引っ張りウィジットを作成(CreateWight)を追加
Classでウィジットを選択
ウィジットを作成から引っ張りAddToViewPortを追加
ReturnValueとターゲットをつなぐ
ウィジットを作成のOwningPlayerから引っ張りGetPlayerControllerを追加
ReturnValueから引っ張りSetInputModeUIOnlyを追加
ReturnValueから引っ張りSetShowMouseCursorを追加
AddToViewPortからSetShowMouseCursorをつなぐ
SetShowMouseCursorからSetInputModeUIOnlyをつなぐ
SetShowMouseCursorにチェックを入れる

他のレベルにノードをコピペしてClassでウィジットを選択

プレイ画面の場合は
SetInputModeUIOnlyをSetInputModeGameOnlyに変更
SetShowMouseCursorにチェックを外す

 

時間制限機能
プレイ画面のウィジットを開く
右上のグラフをクリック
変数を追加、名前をDeltaTime、TimeLimit変数の型をFloat
コンパイル・セーブ
TimeLimitのデフォルトを10秒

変数DeltaTimeをドラッグしてSet配置、イベントTickとつなぐ
イベントTickのInDeltaTimeとDeltaTimeをつなぐ
変数TimeLimitをドラッグしてSet配置、SetDeltaTimeとつなぐ
RM→引き算を追加、変数GetTimeLimit-変数GetDeltaTime、結果をSetTimeLimitにつなぐ

右上のデザイナーをクリック
数字用のTextボックスを選択、コンテンツ→バインド→バインディングを作成
変数TimeLimitをドラッグしてGet配置、リターンノードのReturnValueにつなぐ

 

画面遷移の設定
Titleウィジットを開く
ボタンを選択、詳細→イベントのOn Clickedの「+」
イベントOnClickdeから引っ張りOpenLevelを追加
LevelNameに遷移先のレベル名を入れる

GameOverウィジットを開く
Restartボタンを選択、詳細→イベントのOn Clickedの「+」
イベントOnClickdeから引っ張りOpenLevelを追加
LevelNameに遷移先のレベル名を入れる

Play画面→GameOver画面
プレイ画面のウィジットを開く
右上のグラフをクリック
イベントグラフタブをクリック
SetTimeLimitから引っ張り比較演算子<(以下)を追加
<から引っ張りBranchを追加
SetTimeLimitとBranchをつなぐ
Trueから引っ張りOpenLevelを追加
LevelNameにGameOverを入れる

Play画面→Clear画面
ゲームClear条件の設定
プレイ画面のレベルを開く
上の箱をクリック→基本→TriggerBoxをクリックして配置
または上の箱をクリック→アクタ配置パネルからTriggerBoxをドラッグして配置

 

アウトライナーでRM→「AddEvent」から 「OnActorBeginOverlap」を左クリックすると、レベルブループリントに新たなイベントが追加?できん


レベルブループリントを開き
RM→上のTriggerBoxなんちゃら~にイベントを追加→コリジョン→OnActorBeginOverlapを追加でできた

 

OnActorBeginOverlapのOtherActorから引っ張りCastToThirdPersonCharacterを追加
引っ張りOpenLevelを追加
LevelNameにClearを設定

 

表記を分:秒に変更
TimeLimitを開き
変数Minutes、Integerを追加
変数Seconds、Integerを追加

イベントグラフで
計算後のTimeLimit/60をSetMinutes
計算後のTimeLimit Fmod 60をSetSeconds
※余り計算はFmod
SetTimeLimit、SetMinutes、SetSeconds、Branchとつなぐ

GetText0グラフでToTextを開き最大、最小表示桁数を指定する