要实现技能效果,我们会在技能面板中使用Filled模式来实现倒计时效果。
我们在Hierarchy面板中建立这样的父子关系
![](http://imgsrc.baidu.com/forum/w%3D580/sign=26419addf61f3a295ac8d5c6a925bce3/7cef9f2f07082838b525e717be99a9014c08f11d.jpg)
然后我们只需要在脚本中分别关联这几个对象写出相应脚本即可。
在我的项目中,我建立了一个结构体来保存各个属性(不要问我为什么不建立一个类)。
![](http://imgsrc.baidu.com/forum/w%3D580/sign=a3c4acff7ad98d1076d40c39113fb807/51c5b219ebc4b745ceb08d15c9fc1e178a821518.jpg)
其中比较关键的代码在这里
![](http://imgsrc.baidu.com/forum/w%3D580/sign=49bc8a06e3dde711e7d243fe97eecef4/e88bb151f8198618aaa4d5874ced2e738ad4e666.jpg)
对代码做简单注释
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");
}
}