「敵を全て倒すとクリア」「コインを全て取るとクリア」みたいなシステム。
今回は「敵を全て倒すとクリア」という形でやります。
アクターのBP_Enemyとそれを倒すシステムが既にあるという前提です。
Engineバージョンは5.3.2。
敵の残数を管理
ウィジェットBP: W_Score
親クラス: User Widget
名前: W_Score
・新規作成
グラフ
Enemies – Integer
・「インスタンス編集可能」と「スポーン時に公開」にチェックを入れる。
デザイナー
必要なのはText1つだけです。それ以外は好きなように作ってください。
とりあえずCanvas Panelを配置。
その下にVertical Boxを配置。
・アンカーを右上
・Vertical Boxを画面右上に配置。
Vertical Boxの中にHorizontal Boxを配置。
Horizontal Boxの中にVertical Boxを2つ配置。
・2つのVertical Boxは同じ階層
・それぞれスロット > Sizeをフィルにする
この2つのVertical Boxの中にそれぞれTextを入れる。
・左側のTextのコンテンツ > Textに「残数」
・右側のTextのコンテンツ > Textに「10」
フォントサイズ等は好きなように設定してください。
「10」と記入したTextのバインドをEnemiesにする。
変数Enemiesの値が表示されるようになるわけです。
Level: ThirdPersonMap
Levelを開いてください。
今回はサードパーソンテンプレートのThirdPersonMapを使っています。
画面上部の3つのノードみたいなアイコンから「レベルブループリントを開く」を選択。
LevelにBP_Enemyを3体配置しました。
この状態でテストプレイすると、右上に「残数 3」と表示されます。
キャラクターBP: BP_Enemy
【変数追加】
W_ScoreRef – W_Score
Level: ThirdPersonMap

・Add to Viewportの後に追加。
【追記】GetしたEnemyから線を伸ばしてFor Each Loopを配置。
【追記】For Each LoopのArray Elementから線を伸ばしてSet W Score Refを配置。
クリアした時の処理
Enemiesが0になった時の処理。
ウィジェットBP: W_Win
親クラス: User Widget
名前: W_Win
・新規作成
今回は簡単に作成します。
とりあえずCanvas Panelを配置。
その下にTextを配置。
・アンカーを中央にしてTextを中央に配置
・Textのコンテンツ > Textに「Win」
今回は簡単に作成しましたが、このウィジェットブループリントにButtonを配置して「次のステージ」「リトライ」「終了」など選択できるようにすると良いでしょう。
Textの文字は「あの洞窟の敵を一掃してくれ」みたいなクエストの場合は「Win」ではなく「Quest Complete」など。
ウィジェットBP: W_Score
キャラクターBP: BP_Enemy
応用しやすい
今回はキャラクターBPのBP_Enemyを使用しましたが、コインであればアクターBPのBP_Coinを使って、同じように管理できます。コイン取得時にコイン数の変数を減らす。
W_ScoreとWinを1つにまとめる事も可能です。
W_Scoreの中央にTextで「Win」と書いておき、最初は非表示にしておく。変数化もしておく。
グラフで、Enemiesが0になった時の処理で「Win」を表示する。
ステージのクリア条件やクエストのクリア条件など、使いやすいシステムです。
コメント
大分前の記事の上初心者すぎる
質問で申し訳ないのですが
W_Scoreでカスタムイベント CheckEnemies
はどうやって作るのでしょうか?
ウィジェットブループリント(W_Score)を開き、右上の「グラフ」を選択。
右クリックして検索欄に「カスタム」と入力すれば、「カスタムイベントを追加…」がヒットします。
それでカスタムイベントを追加して、名前をCheckEnemiesにします。
すみません事故解決しました!
Third Person Mapの残数の表示を減らす処理のセットW ScoreRefはどのようにして追加するのでしょうか?
■レベルブループリントThird Person Mapの編集
作成済の変数Enemy(BP Enemy/配列)をGetして配置します。
そのEnemyから線を伸ばしてFor Each Loopを配置。
これ以外の方法でFor Each Loopを配置すると連動しないと思われます。
For Each LoopのArray Elementから線を伸ばしてSet W Score Refが配置できます。
ご丁寧にありがとうございます!解決しました!