血条是游戏开发中常见的功能
实际效果
前期准备
1、在场景中添加UI/Image作为血条的背景
2、在背景下继续创建Image图片是代表血量,背景可以不设置图片,但是血量必须添加图片在图片类型中选择Filled,水平,起始点为左,填充量1,这样开始时血量是满的。
3、在血条的下创建text,显示血量文字
脚本编写
注意:我获取组件的方式是通过名称查找,注意物体名称是否和awake获取的能对上。
using UnityEngine;
using UnityEngine.UI;
public class Blood : MonoBehaviour
{
private Image HpSlider;
private Text HpText;
//伤害血量
private float AttackDamage = 5f;
//总血量
private float BloodVolume = 100f;
private void Awake()
{
//获取血量图片和文字
HpSlider = GameObject.Find("HP").GetComponent<Image>();
HpText = HpSlider.transform.GetChild(0).GetComponent<Text>();
}
private void Update()
{
//当点击A按钮时减血
if (Input.GetKeyDown(KeyCode.A))
{
if (HpSlider.fillAmount <= 0)
{
Debug.Log("死亡");
}
else
{
HpSlider.fillAmount -= AttackDamage/BloodVolume;
// 显示当前血量和总血量的百分比
HpText.text = string.Format("{0}/{1}", ((int)(HpSlider.fillAmount * 100f)).ToString(), BloodVolume);
Debug.Log("受伤");
}
}
}
}
测试
轮询期间当点击A按钮时,血量会发生变化
进度条的制作方法和血条基本一致,不过是从0开始到1,也就是在场景中将Filled Amount属性设置为0,在脚本的Updata轮询中+=时间增量*速度即可。
unity包