勢力を可視化【UnityでRTSを作る 18】
勢力情報を可視化するUIを作りました。
ForceBar.cs
UIを制御するスクリプトです。
ForceBar.cs
using System.Linq; using UnityEngine; using UnityEngine.UI; public class ForceBar : MonoBehaviour { public static ForceBar Instance { get { return _Instance ? _Instance : (_Instance = FindObjectOfType<ForceBar>()); } } private static ForceBar _Instance = null; public RectTransform allyBarTr; public RectTransform enemyBarTr; public Text allyCount; public Text enemyCount; private void Start () { BarUpdate(); } public void BarUpdate () { float p = (float)CubeKun.list.Count(c => c.Team == Team.Ally) / (float)CubeKun.list.Count * 2; allyBarTr.localScale = new Vector3(p,1,1); enemyBarTr.localScale = new Vector3(2- p,1,1); allyCount.text = CubeKun.list.Count(c => c.Team == Team.Ally).ToString(); enemyCount.text = CubeKun.list.Count(c => c.Team == Team.Enemy).ToString(); } }
ユニットのスポーン・死亡時にBarUpdate関数を呼んで現在の状態を適用します。
UIを設定
ピボットはAllyBarのxが0、EnemyBarのxが1になっています。
イメージ
画面上に勢力情報のUIを追加した pic.twitter.com/RuJRiJLbgP
— Macky (@macky_soft) 2017年5月21日