因为有多种技能,都放在Update里面,代码太多。自己重写了一下更新冷却效果代码,采用倒计时方式,显示剩余百分比,(范围9~0):
private void Update()
{
if(Input.GetKeyDown(KeyCode.Alpha1))
{
ClickSkill1Atk();
}
if (isSk1CD)
{
UpdateSk1FillAmount();
}
}
public Image imgSk1CD;
public Text txtSk1CD;
private bool isSk1CD = false;
private float sk1CDTime;
private int sk1Num;
private float sk1FillCount = 0f;
private float sk1CDTimeCount;//用于保存冷却剩余百分比
public void ClickSkill1Atk()
{
if (isSk1CD == false)
{
BattleSys.Instance.ReqReleaseSkill(1);
isSk1CD = true;
SetActive(imgSk1CD);
imgSk1CD.fillAmount = 1;
//sk1Num = (int)sk1CDTime;
//SetText(txtSk1CD, sk1Num);
sk1CDTimeCount = sk1CDTime;
sk1FillCount = sk1CDTimeCount / sk1CDTime;
imgSk1CD.fillAmount = sk1FillCount;
sk1Num = (int)(sk1FillCount * 10);
SetText(txtSk1CD, sk1Num);
}
}
public void UpdateSk1FillAmount()
{
sk1CDTimeCount -= Time.deltaTime;
if(sk1CDTimeCount>0)
{
sk1FillCount = sk1CDTimeCount / sk1CDTime;
imgSk1CD.fillAmount = sk1FillCount;
sk1Num = (int)(sk1FillCount*10);
SetText(txtSk1CD, sk1Num);
}
else
{
isSk1CD = false;
SetActive(imgSk1CD, false);
}
}