UEを学ぶ「UIの表示_3_スコアを変動させる」
実際にコインを獲得した際に、スコアを変動するようにする。
まず、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」といった表示の管理も行えるようだ。