技能冷却的径向扇形遮罩是战斗界面的标配:烈火剑法按下后,图标上方的暗色扇形顺时针扫过,扫完即可再次施放。圆形进度条控件让扇形冷却不需要逐帧手绘遮罩,角度驱动的呈现比直线进度条更贴合技能图标。
---技能图标 + 圆形冷却遮罩
function SkillCD.build(slot, skillId, cdSeconds)
local cd = GUI:ProgressTimer_Create(slot.node, "cd_" .. skillId, 0, 0, 22)
GUI:ProgressTimer_setReverseDirection(cd, 1)
GUI:ProgressTimer_setPercentage(cd, 100)
slot.cdNode = cd
slot.cdTotal = cdSeconds
return cd
end
ProgressTimer 创建半径 22 像素的圆形进度条,覆盖在技能图标上层,setReverseDirection 设定顺时针扫描方向。满值 100 代表全遮蔽(刚施放),冷却推进时百分比匀速降向 0,扇形收拢完毕即冷却结束。遮罩用半透明黑,图标在遮罩下依稀可见,玩家对技能状态保持感知。
---点击施放与冷却推进
function SkillCD.bindCast(slot, skillId)
GUI:addOnClickEvent(slot.btn, function()
if slot.cooling then
SL:ShowSystemTips("技能冷却中")
return
end
slot.cooling = true
SL:SendNetMsg(MSGID.SKILL_CAST, skillId, 0, 0, "")
SL:Schedule(0.1, function()
local left = slot.cdEnd - os.time()
local pct = math.max(0, left / slot.cdTotal * 100)
GUI:ProgressTimer_setPercentage(slot.cdNode, pct)
if left <= 0 then slot.cooling = false end
end)
end)
end
点击施放后进入冷却态,Schedule 以 100 毫秒的步进刷新扇形角度,剩余秒数同步显示在图标中央。冷却进入 1 秒以内时秒数变红,施放的临门一脚给明确的视觉信号。野蛮冲撞这类短冷却技能的扇形转速快,与长冷却的大招形成节奏对比,玩家扫一眼技能栏就知道哪些技能转好了。
客户端冷却剩余与服务器技能 CD 的偏差统计,偏差超过 300 毫秒即为时钟基准不一致;扇形刷新的帧耗时监控,超过 2 毫秒说明控件层叠过多。
扇形的旋转方向曾经与玩家预期相反,逆时针的扫描显得别扭,setReverseDirection 一参数修复。冷却的本地预演与服务器校验不同步,网络抖动时扇形扫完技能却施放失败,服务器回包驱动扇形回滚的补偿机制补上。百分比曾经除以总时长写反了分子分母,扇形越走越长,冷却结束后遮罩反而全开。
冷却时长从技能表读取,界面层不写死任何技能数值。扇形遮罩的贴图支持换肤,节日主题换色不换结构。多段技能(烈火剑法的蓄力两段)的每段独立扇形,段与段的衔接用 100 毫秒的渐变过渡。
本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 跨服远征分先锋、主力、后勤三队独立推进,三线全通合围BOSS。不同战力成员都有参与感。 策划要点与配置 …
实战应用:用在哪里 副本限时挑战加入超时血量惩罚:超时后BOSS攻击递增。上线后BOSS攻击叠到十倍秒杀全队。 事故还原与补…
实战应用:用在哪里 混沌麒麟召唤是全服高光时刻:暗幕聚合、裂缝展开、麒麟着陆三段演出各1.3秒。 三段式入场演出编排 围观镜…
实战应用:用在哪里 任务对话一闪而过玩家想回顾。回看接口把对话按节点存档,面板翻阅全部对话记录。 对话存档与查询渲染 当前章…
实战应用:用在哪里 服务器承载六十张地图,空闲地图白耗资源。按需激活,末人离开后六十秒休眠。 激活与休眠触发 休眠回收 验证…
实战应用:用在哪里 坐骑资质洗炼随机重滚五条属性,锁定满意的条目不再重滚,锁定越多消耗越大。 洗炼与锁定 锁定消耗递增 验证…