Unity3d C#实现类似于王者荣耀技能读条和CD冷却的功能(含源码)

效果

Unity3d C#实现类似于王者荣耀技能读条和CD冷却的功能(含源码)_第1张图片

效果如图,主要是释放技能后,有一定的技能的持续时间(也可以设置为0),然后技能释放完成后,技能进入了冷却时间的倒计时,技能冷却完成后就可以再次释放。

实现

UI搭建

UI的搭建较为简单就是几张图片(Image)配合文本(Text),文本主要用于技能冷却文字的提示和冷却CD倒计时的显示,而图片就包含了技能的图标、技能释放的外环(用于显示释放倒计时)、技能冷却的倒计时图片等,效果如图:
Unity3d C#实现类似于王者荣耀技能读条和CD冷却的功能(含源码)_第2张图片

不过技能释放的外环和技能冷却倒计时图片需要将他们的Image Type设置为Filled:
Unity3d C#实现类似于王者荣耀技能读条和CD冷却的功能(含源码)_第3张图片

编写代码

技能的配置项我们将他们提取为公用的,而且可以配置的操作:

   [Header("技能释放持续时间")]
    public float SkillDura;

    [Header("技能CD")]
    public float SkillCD;

    [Header("UI图片&文字")]
    public Text CountDownText;
public Image DoingImg, CoverImg;

这样我们就能在单个技能中配置多个技能各自的相关属性了。生产的配置面板如图:
Unity3d C#实现类似于王者荣耀技能读条和CD冷却的功能(含源码)_第4张图片

技能的释放中的更新操作主要是根据释放的时间来更新释放图片的进度(fillAmount),并在释放完成后设置还原释放状态。

    void DoSkillUpdate() {
        if (Time.time - SkillTime <= SkillDura)
        {
            DoingImg.fillAmount = (SkillDura - (Time.time - SkillTime)) / SkillDura;
            //CountDownText.text = (SkillDura - (Time.time - SkillTime)).ToString("F1");
            CountDownText.text = "";
        }
        else
        {
            IsDoing = false;
            CoverImg.fillAmount = 1;
            DoingImg.fillAmount = 0;
            LastTime = Time.time;
        }
}

技能冷却CD读秒的过程,主要的操作是更新技能冷却图片的进度(fillAmount)和技能冷却的倒计时,并在技能冷却后重新设置技能的状态。

    void SkillNotReadyUpdate() {
        if (Time.time - LastTime <= SkillCD)
        {
            CountDownText.text = "冷却中\n"+(SkillCD - (Time.time - LastTime)).ToString("F1");

            CoverImg.fillAmount = (SkillCD - (Time.time - LastTime)) / SkillCD;
        }
        else
        {
            CountDownText.text = "";
            IsReady = true;
            CoverImg.fillAmount = 0;
        }
    }

技能的释放接口,我们需要进行一定的状态判断,正在释放中或者冷却中是无法释放的,释放接口如下:

public void DoSkill() {
        if (!IsReady || IsDoing)
            return;
        CoverImg.fillAmount = 0;
        LastTime = Time.time;
        SkillTime = Time.time;
        IsReady = false;
        IsDoing = true;
 }

并将该函数绑定在技能的图标的按钮点击函数上,这样点击技能就可以实施技能。

这样技能的编码全部完成。

其它

有很多时候技能是没有持续时间(即为0),这时候只需要将SkillDura设置为0
Unity3d C#实现类似于王者荣耀技能读条和CD冷却的功能(含源码)_第5张图片

技能便可以秒释放,且开始冷却技能。
Unity3d C#实现类似于王者荣耀技能读条和CD冷却的功能(含源码)_第6张图片

这里我多克隆几个技能图标,并设置不同的参数,通过快捷键同步实施效果如下:
Unity3d C#实现类似于王者荣耀技能读条和CD冷却的功能(含源码)_第7张图片

源码工程

https://download.csdn.net/download/qq_33789001/87349847
(打不开说明暂时未审核通过)

你可能感兴趣的:(Unity3D,Unity技能UI,Unity王者技能释放,Unity技能读条CD,Unity技能冷却CD)