效果
代码
我这里是提前准备了两根血条一红一紫,也可以自定颜色改Color即可,自行拓展。
//参数分别为最大生命值,当前生命值,表现为几管。
public void SetHP(float maxHP,float currentHP,int hpCount)
{
//如果满血就初始化,不是满血就更新血条
if(maxHP == currentHP)
{
this.maxHP = maxHP;
count = hpCount;
every = maxHP / count; //每管多少血
CountTxt.text = "x" + count.ToString();
}
else
{
UpdateHP(currentHP);
}
}
//更新血条
public void UpdateHP(float current)
{
//满血
if(current == maxHP)
{
return;
}
//空血关闭面板
if(current <= 0)
{
HidePanel();
}
//显示血条数
CountTxt.text = "x" + ((int)(current / every) + 1).ToString();
//最后一管的话不需要显示下面那层
if ((int)(current / every) == 0)
{
CountTxt.gameObject.Hide();
PurpleImg.fillAmount = 0;
RedImg.fillAmount = current / every;
return;
}
//根据取余判断血条次序
if((int)(current / every) % 2 == 0)
{
PurpleImg.transform.SetAsFirstSibling();
PurpleImg.fillAmount = 1;
RedImg.fillAmount = current % every / every;
}
else
{
RedImg.transform.SetAsFirstSibling();
RedImg.fillAmount = 1;
PurpleImg.fillAmount = current % every / every;
}
}