要实现技能效果,我们会在技能面板中使用Filled模式来实现倒计时效果。
我们在Hierarchy面板中建立这样的父子关系
然后我们只需要在脚本中分别关联这几个对象写出相应脚本即可。
在我的项目中,我建立了一个结构体来保存各个属性(不要问我为什么不建立一个类)。
其中比较关键的代码在这里
对代码做简单注释
if(skillSprites[index].isOpen) //如果已经获得该技能执行
{
//Debug.Log("index = " + index);
if (skillSprites[index].isPressDown) //当技能被激活时执行
{
skillSprites[index].isOn = false; //冷却时间重置
skillSprites[index].timerMask.enabled = true; //CD蒙版激活
skillSprites[index].skillTimer -= Time.deltaTime; //CD时间开始倒计时
//startTimer[index]为该技能的冷却时间
//因为在Image组件fillAmount的值范围是[0,1]的float值,所以这里做一个计算转化为百分比
skillSprites[index].timerMask.fillAmount -= (Time.deltaTime / startTimer[index]);
//更新时间显示
skillSprites[index].timerText.text = skillSprites[index].skillTimer.ToString("F1");
}
}