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; } } }