NGUI实现技能冷却

在UIRoot下添加sprite(Skill)作为技能的图片 其上添加Skill脚本 (实现技能冷却的脚本 下文给出) 上面会有相关物体的引用 

创建子对象sprite(Filled) 为技能遮罩 将UISprite的Type改为Filled 出现的FillAmount 改变其value (0-1)就可以实现技能冷却 这里的图片作为技能遮罩 可以改变图片颜色的alpha 

创建子对象label(Time) 显示剩余时间 这里的 10s只是样式 当游戏运行时会赋值并显示出来

创建子对象label(KEy)技能发动所需按下的键

然后就是代码了
public class Skill : MonoBehaviour {

     public UILabel timeLabel;  //  时间label的引用
     public UISprite filledSprite;  //  遮罩sprite的引用
     public float skillColdTime;  //  技能冷却的时间

     private bool isColding = false;  //  是否冷却的标志位
     private float timer = 0f;  //  计时器

     void Start()  //  默认开始时让技能遮罩和时间都不显示
     {
          timeLabel.gameObject.SetActive (false);
          filledSprite.gameObject.SetActive (false);
     }

     void Update()  //  因为要实时监测,写在Update中
     {
          if (Input.GetKeyDown (KeyCode.A) && !isColding)  //  当按下A键并且当前技能不在冷却时可以释放技能
          {
               print ("释放技能");
               isColding = true;  //  修改标志位
               timeLabel.text = ((int)skillColdTime).ToString() + "s";  //  显示出剩余时间
               timeLabel.gameObject.SetActive (true);
               filledSprite.fillAmount = 1f;  //  让遮罩显示出来
               filledSprite.gameObject.SetActive (true);
               timer = skillColdTime;  //  让计时器的时间等于冷却时间
          }
          if (isColding)  //  如果技能在冷却状态
          {
               timer -= Time.deltaTime;  //  让计时器时间减少
               timeLabel.text = ((int)timer).ToString() + "s";  //  显示剩余的冷却时间
               filledSprite.fillAmount = timer / skillColdTime;  //  按比例的减小fillamount

               if(timer <= 0f)  //  当计时器减少到0时,则技能冷却结束 让技能遮罩和时间都不显示 也更改其标志位
               {
                    timeLabel.gameObject.SetActive (false);  
                    filledSprite.gameObject.SetActive (false);
                    isColding = false;
               }
          }
     }
}

然后就是运行 就可以实现技能冷却的效果了 
有不当之处还请unity大神指教
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值