ヒキニートがゲームを作るブログ

Unityでゲームを作る過程を投稿します

勢力を可視化【UnityでRTSを作る 18】

勢力情報を可視化するUIを作りました。
f:id:MackySoft:20170520184504j:plain

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を設定

f:id:MackySoft:20170520203018j:plain
ピボットはAllyBarのxが0、EnemyBarのxが1になっています。

イメージ