参考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を開き最大、最小表示桁数を指定する