Unity3d C#实现类似于王者荣耀技能读条和CD冷却的功能(含源码)
Posted 十幺卜入
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity3d C#实现类似于王者荣耀技能读条和CD冷却的功能(含源码)相关的知识,希望对你有一定的参考价值。
效果
效果如图,主要是释放技能后,有一定的技能的持续时间(也可以设置为0),然后技能释放完成后,技能进入了冷却时间的倒计时,技能冷却完成后就可以再次释放。
实现
UI搭建
UI的搭建较为简单就是几张图片(Image)配合文本(Text),文本主要用于技能冷却文字的提示和冷却CD倒计时的显示,而图片就包含了技能的图标、技能释放的外环(用于显示释放倒计时)、技能冷却的倒计时图片等,效果如图:
不过技能释放的外环和技能冷却倒计时图片需要将他们的Image Type设置为Filled:
编写代码
技能的配置项我们将他们提取为公用的,而且可以配置的操作:
[Header("技能释放持续时间")]
public float SkillDura;
[Header("技能CD")]
public float SkillCD;
[Header("UI图片&文字")]
public Text CountDownText;
public Image DoingImg, CoverImg;
这样我们就能在单个技能中配置多个技能各自的相关属性了。生产的配置面板如图:
技能的释放中的更新操作主要是根据释放的时间来更新释放图片的进度(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
技能便可以秒释放,且开始冷却技能。
这里我多克隆几个技能图标,并设置不同的参数,通过快捷键同步实施效果如下:
源码工程
https://download.csdn.net/download/qq_33789001/87349847
(打不开说明暂时未审核通过)
王者荣耀:安琪拉机制优化,1技能缓存保留,成新增T1中路
在王者荣耀中,中路的环境自从S20更新以后,就在不断的从多种英雄池中轮换,由一开始"日暮之流"大火热度提升的扁鹊貂蝉,到后来倾向于炮台类法师的干将小乔,一直到现在通过加强回归线权的火舞诸葛,中路的英雄主流转变向来都是跟着版本变动的,而安琪拉作为大环境下的法王同样如此,有1机制改动后,成为了版本的新增T1中路!
其实这种机制的改动,对于一些英雄而言算是特殊的加持,例如版本中的韩信,在3技能持续时间内可以有很长一段时间来选择2技能的施法位置,因此总的来说这类机制有利有弊,或许在将来可以设置新的选项,供玩家自行选择开启,不知道你的本命会因此受到影响吗?
以上是关于Unity3d C#实现类似于王者荣耀技能读条和CD冷却的功能(含源码)的主要内容,如果未能解决你的问题,请参考以下文章