using UnityEngine; using System.Collections; using UnityEngine.UI; public class HealthController : MonoBehaviour { //当前对象是血条还是蓝条 public bool isHealth = false; //虚拟轴,横轴,纵轴 private float hor,ver; //血条的最大宽度 private float healthMaxWidth = 470; //蓝条的最大宽度 private float powerMaxWidth = 425; //当前的虚拟轴 private float currentAxis; //当前的最大宽度 private float currentMaxWidth; //RectTransform组件 private RectTransform rectTr; //速度 public float speed = 100; //血条文本 public Text healthText; //蓝条文本 public Text powerText; //血条蓝条的最大值 public float healthMaxValue = 1000f; public float powerMaxValue = 500f; //当前的条的最大值 private float currentMaxValue; //当前修改的文本显示框 private Text currentText; void Start() { rectTr = GetComponent<RectTransform> (); } void Update() { hor = Input.GetAxis ("Horizontal"); ver = Input.GetAxis ("Vertical"); //如果是血条 if (isHealth) { currentAxis = hor; currentMaxWidth = healthMaxWidth; currentText = healthText; currentMaxValue = healthMaxValue; } //如果是蓝条 else { currentAxis = ver; currentMaxWidth = powerMaxWidth; currentText = powerText; currentMaxValue = powerMaxValue; } //根据用户的操作,计算当前条的宽度 float newWidth = rectTr.sizeDelta.x + currentAxis * Time.deltaTime * speed; //限制宽度 float realWidth = Mathf.Clamp (newWidth, 0, currentMaxWidth); //赋值到RectTransform rectTr.sizeDelta = new Vector2(realWidth,rectTr.sizeDelta.y); //计算当前数值 float currentValue = (realWidth / currentMaxWidth) * currentMaxValue; //转整数操作 currentValue = Mathf.Round (currentValue); //将数值信息显示到Text currentText.text = currentValue.ToString () + "/" + currentMaxValue.ToString (); } }
血条,蓝条对象上都挂上此脚本
原文:http://www.cnblogs.com/VR-1024/p/6011676.html