NGUI实现技能CD效果

  在NGUI中使用Sprite的遮罩效果可以很轻松的实现技能CD效果。

具体实现步骤:

①新建一个技能图标的Sprite 如图中的Skill001,再在该技能Sprite上添加一个Sprite做遮罩, Atlas中选一张纯灰色背景的图片,如图中的Shade_Sprite。

②在该遮罩Sprite中有三个属性用来控制遮罩的效果。

Type:Filled 

Fill Dir:Radial360

Fill Amount:0

 

滑动Fill Amount,就可以看到效果了

 ③给技能游戏对象绑定一个快捷键或按钮的脚本

在技能Sprite上添加一个Box Collider和一个NGUI按钮脚本UIButton,给按钮绑定onClick事件,参考NGUI事件监听之UIEventListener的使用

public class Skill : MonoBehaviour {
    //冷却时间
    public float coldTime = 1f;
    //是否正在冷却
    private bool isColding = false;
    private UISprite shade_Sprite;

    void Awake()
    {
        //var Skill001_Shade = GameObject.Find("UI Root/Skill_Window/Skill_Border/Skill001/Shade_Sprite");
        //shade_Sprite = Skill001_Shade.GetComponent<UISprite>();
        shade_Sprite = gameObject.transform.Find("Shade_Sprite").GetComponent<UISprite>();
        UIEventListener.Get(this.gameObject).onClick += StartSkill;
    }
    void Update()
    {
        if (Input.GetKey(KeyCode.N) && !isColding)
        {
            //TODO 触发技能,技能特效等
            shade_Sprite.fillAmount = 1;
            isColding = true;
        }

        if (isColding)
        {
            shade_Sprite.fillAmount -= (1f/coldTime)*Time.deltaTime;
            if (shade_Sprite.fillAmount <= 0.001)
            {
                shade_Sprite.fillAmount = 0;
                isColding = false;
            }
        }

    }

    void StartSkill(GameObject go)
    {
        if ( !isColding)
        {
            //TODO 触发技能,技能特效等
            shade_Sprite.fillAmount = 1;
            isColding = true;
        }
    }   

}
原文地址:https://www.cnblogs.com/townsend/p/4128317.html