码迷,mamicode.com
首页 > 其他好文 > 详细

NGUI实现技能CD效果

时间:2014-11-28 14:22:13      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   ar   color   os   使用   sp   

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

具体实现步骤:

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

bubuko.com,布布扣

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

Type:Filled 

Fill Dir:Radial360

Fill Amount:0

 

 bubuko.com,布布扣

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

bubuko.com,布布扣

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

在技能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;
        }
    }   

}

 

NGUI实现技能CD效果

标签:style   blog   http   io   ar   color   os   使用   sp   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!