Unity学习——UGUI制作技能的冷却效果

技能冷却的原理是控制Image中的填充效果为Filled时的FilledAmount属性值的依次减少,从而产生技能的冷却效果。
这里写图片描述
首先我们需要准备素材,技能的背景图(SkillBg),技能图(Image),冷却的技能图(FillImage只是把技能图的颜色设置为黑灰色)
这里写图片描述
然后将每个图罗列好(背景图是技能图和冷却图的父物体),背景图和技能图无须修改,只要将冷却图的Image Type修改为Filled, Fill Method修改为360,Fill Origin修改为Top。!!!!!!!!!!
注意:FillAmount是控制冷却图显示的比例,自己调节FillAmount属性观看冷却图的显示效果。
这里写图片描述
为背景图添加一个button控件和一个c#脚本
My Skill的脚本如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;//一定要有这个头文件
public class MySkill : MonoBehaviour {
    public float coldTime = 2.0f;//定义技能的冷却时间
    private float timer = 0;//定义计时器
    private Image filledImage;//定义一个填充图片,下面从start方法里获取实例中的填充图片
    private bool isStartTime = false;//定义标志量,决定是否开始计时
    // Use this for initialization
    void Start () {
        filledImage = transform.Find("FillImage").GetComponent<Image>();//用transform中的Find方法获取名为FillImage物体中Image组件;
    }

    // Update is called once per frame
    void Update () {
        if (isStartTime)//当开始计时时执行下列代码
        {
            timer += Time.deltaTime;
            filledImage.fillAmount = (coldTime - timer) / coldTime;//按照时间比例显示图片,刚开始点击时,timer小,应该显示的背景图大
            if(timer>=coldTime)//判断是否达到冷却时间
            {
                filledImage.fillAmount = 0;//冷却图不显示
                timer = 0;//重置计时器
                isStartTime = false;//结束计时
            }
        }

    }
    public void OnShow()//定义一个点击按妞触发的方法
    {
        isStartTime = true;//当点击时开始计时;
    }
}

这里写图片描述
在背景图的button组件下添加一个点击事件,点击物体为背景图,点击方法为我们设置的OnShow方法;
运行场景
这里写图片描述
这里写图片描述
这就是一个简单的技能冷却效果的展示。
很多时候我们还需要用键盘上的键来操作技能方法同样简单,只需要在UpDate中添加几行代码即可;

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;//一定要有这个头文件
public class MySkill : MonoBehaviour {
    public float coldTime = 2.0f;//定义技能的冷却时间
    private float timer = 0;//定义计时器
    private Image filledImage;//定义一个填充图片,下面从start方法里获取实例中的填充图片
    private bool isStartTime = false;//定义标志量,决定是否开始计时
    // Use this for initialization
    void Start () {
        filledImage = transform.Find("FillImage").GetComponent<Image>();//用transform中的Find方法获取名为FillImage物体中Image组件;
    }

    // Update is called once per frame
    void Update () {
        /////////////////////////////////////////////
        /////////////////////////////////////////////
        if (Input.GetKeyDown(KeyCode.Alpha1))//当按下键盘上的数字1键,触发技能
            isStartTime = true;
        if (isStartTime)//当开始计时时执行下列代码
        {
            timer += Time.deltaTime;
            filledImage.fillAmount = (coldTime - timer) / coldTime;//按照时间比例显示图片,刚开始点击时,timer小,应该显示的背景图大
            if(timer>=coldTime)//判断是否达到冷却时间
            {
                filledImage.fillAmount = 0;//冷却图不显示
                timer = 0;//重置计时器
                isStartTime = false;//结束计时
            }
        }

    }
    public void OnShow()//定义一个点击按妞触发的方法
    {
        isStartTime = true;//当点击时开始计时;
    }
}

这样以来,鼠标点击技能会触发技能,按下键盘的数字键1同样也会触发技能。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值