Unity技能CD的冷却效果实现

Unity 多个技能CD的第一次尝试

第一次写博客感觉棒棒哒~:

  • 为了让冷却时间能够根据技能的不同而产生不同的冷却时间效果,我想到的是在技能图片上添加Button组件,通过Button组件往对应的方法中传入不同的参数来达到不同的冷却时间效果。
    这里写图片描述

    其中的Background 为技能图片,CD 为显示冷却状况的图片,技能图标在CD的下方,在这里我通过控制CD中的Raycast Target 来控制图标的交互功能.通过修改ImageType为Radial360 来达到CD旋转的效果.

    Unity技能CD的冷却效果实现_第1张图片

    脚本我是挂在技能GameObject 上的!!!就是那个Ability(1),还要注意组件的位置因为我是通过GetChild来获取的 如果Index的值不同或者位置不同都会引发错误

    Unity技能CD的冷却效果实现_第2张图片

在点击事件中添加对应的方法与参数即可.不同的技能都需要重新添加脚本和方法以及参数,所以可能还是会有点繁琐。


主要代码

“` C#
private float currentTime; //
private Image coolingImage;
private float coolingTimer;
// Use this for initialization
void Start () {
coolingImage = transform.GetChild(1).GetComponent();
coolingImage.raycastTarget = false;
}

// Update is called once per frame
void Update () {
    UpdateImage();

}

public void OnBtnClickSkill(float timer)
{
    coolingTimer = timer;    
    currentTime = 0.0f;
    coolingImage.fillAmount = 1.0f;

}

private void UpdateImage()
{
    if (currentTime < coolingTimer)
    {
        currentTime += Time.deltaTime;
        coolingImage.fillAmount = 1 - currentTime / coolingTimer;
        if(coolingImage.fillAmount != 0)
        {
            coolingImage.raycastTarget = true;
        } 
        else
        {
            coolingImage.raycastTarget = false;
        }
    }
}

最终实现的效果如下:

这里写图片描述

你可能感兴趣的:(Unity技能CD的冷却效果实现)