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:

Unity NGUI实现技能CD效果

2、修改Sprite的各项属性:

Unity NGUI实现技能CD效果

其中的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、接下来就可以看运行效果:

Unity NGUI实现技能CD效果

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

 

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

你可能感兴趣的:(unity)