UEを学ぶ「UIの表示_3_スコアを変動させる」

実際にコインを獲得した際に、スコアを変動するようにする。

 

youtu.be

 

まず、UIの数値部分だけを変動させるために

「スコア:」「2(数値)」という形にテキストを分割する。

今後は「2」の部分だけが操作されるというわけだ。

 

この数字部分の変更方法だが、

やり方の一つに「バインド」というものがある。

 

コンテンツ>Textの右部分にある「バインド」をクリックして

バインディングを作成」を選び、そこからBPの関数で数値を操作するというものだ。

 

バインディングを作成すると、リターンノードという

BPが現れるので、

そこに新たに変数をつなぎこむ。(今回は「Score Text」と命名

 

この変数がスコア値となって、

今後反映されていく。

講座中では、ひとまず開始時に変数に4をセットして

変化を確かめた。

 

これだけだとスコアが随時反映されないので、

スコアが変動するようにしてあげる必要ある。

なので以下のように組みなおす。

 

この形にすることで、

「Set Score」を経由してスコアが変動できるようになった。

※Set Scoreはint型にしておく。ToTextを経由することで

 文字列に変化する

 

UMG側の実装は以上となる

 

<プレイヤー側でスコアを計算する>

コインの獲得はプレイヤー側で判定を管理する。

 

ThirdPersonCharacterのBPを開き、

に「Action Begn Overlap]で重なった瞬間に

「Cast」ノードで対象を指定することで

特定の種類の接触判定を取ることができる。

 

上記の内容はあくまで判定したかどうかを見ているだけなため、

更に以下のように変更し、Scoreの内容に接触するたびに+1加算する

仕組みとなる。


※PrintStringは検証用

 

次に、変数を実際にウィジェットに反映できるようにする。

以下のように「Return Value」からノードを伸ばし、

変数「UI」を追加する。Add to Viewportのノードもつなぎこむ。

(「Return Value」は「Add to Viewport」と「UI」のどちらにもつながっている)

 

さらに、スコア側にも新たに「Set Score」を用意。

スコアとして表示していた内容を

Set Scoreによて実際に「UI」に反映させる。

 

これで完成。

※そのまま講座通りに進んでいると、初期値が適当な数値になっている可能性があるので

 修正する

※1ずつ加算ではないようにしたい場合「++」の部分を適当な加算処理に変える

 

▼完成後はこんな感じ

(画面がごちゃごちゃしている…)

 

同じように値を取得することで、

HPの表示や「Game Over」といった表示の管理も行えるようだ。