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"); } }
代码量不多,比较简单,不再赘述;
4、接下来就可以看运行效果:
感觉用NGUI还是比较容易实现的,不用NGUI的实现方法就不会了~~