Unity NGUI实现技能CD效果

unity版本:4.5.1  NGUI版本:3.6.5  脚本代码:C#

  在游戏中经常要实现技能的CD效果,NGUI中已经实现了这个功能,即在button上创建一个半透明的Sprite实现这个功能。

  首先要创建一个按钮,点击可以触发技能特效,参考博文:http://www.cnblogs.com/vitah/p/3858924.html,接下来在这个基础上实现技能CD的效果:

1、在button下新建一个Sprite,具体操作为NGUI——Create——Sprite:

2、修改Sprite的各项属性:

其中的Atlas和Sprite即选择的效果,可以找一个比较合适的,红色方框中的设置比较重要,Type一定要设置成Filled才有那个效果;

Fill Amount:初始时所占的百分比;

Invert Fill:顺时针旋转或者逆时针旋转;

Size:可以调整下面Widget中的Size使精灵的大小适应按钮的大小;

 

3、接下来就是在脚本中实现阴影部分面积随着技能CD剩余时间减少的效果,脚本代码:

using UnityEngine;
using System.Collections;

public class test2 : MonoBehaviour {

    // 技能是否处于CD状态
    public bool isCD; 

    // button下的sprite中的UISorite
    UISprite sprite;

    // 技能CD时间
    public float timeCD = 5f;

    // skill effect.
    public GameObject skillEffect;   
    // Use this for initialization
    void Start () {
        // 初始化,找到对应的sprite
        sprite = GameObject.Find ("UI Root/Camera/Anchor/Panel/button/Sprite").GetComponent<UISprite> ();
        isCD = false;
    }


    void Update ()
    {
        // 技能处于CD状态,每次更新阴影部分面积
        if (isCD == true)
        {
            sprite.fillAmount -= Time.deltaTime/timeCD;

            if (sprite.fillAmount == 0) 
            {
                isCD = false;
            }
        }
    }

    //点击时候如果在冷却中,提示技能CD,否则触发特效,开启CD效果
    void OnClick ()
    {
        if (isCD == false)
        {
            isCD = true;
            sprite.fillAmount = 1f;
            Debug.Log ("技能释放");
            Instantiate (skillEffect);
        }else
            Debug.Log ("技能CD");
    }
}
View Code

  代码量不多,比较简单,不再赘述;

4、接下来就可以看运行效果:

  感觉用NGUI还是比较容易实现的,不用NGUI的实现方法就不会了~~

 

参考链接:http://www.xuanyusong.com/archives/2399

posted @ 2014-07-22 17:26  vitah  阅读(1920)  评论(0编辑  收藏  举报