任务日志里“已完成47个任务”的纯文本不够直观,环形进度图把完成度画成一个环:环的填充比例即完成率,中心显示百分比与下一档奖励差,进度可视化让任务清单有了收集的乐趣。
进度环按完成率换算角度,用多个扇形节点拼接成环,超出整圈的进度封顶满环。actor数据由服务端下发,前端渲染。
local SEG = 24
local function renderRing(done, total)
local filled = math.floor(done / total * SEG + 0.5)
for i = 1, SEG do
GUI:setVisible(ringSegs[i], i <= filled)
end
GUI:setText(ringLabel, math.floor(done / total * 100) .. "%")
end
完成数变化时环形从旧值向新值平滑过渡,每帧推进一格直到追上目标值,避免跳变。actor数据由服务端同步,前端驱动动画。
local shown = 0
SL:Schedule(function()
if shown < done then
shown = shown + 1
renderRing(shown, total)
end
end, 0.05)
零进度、半环、满环三组样例的渲染核对;过渡动画在完成数回退时的反向处理验证。埋点环形图展示后的任务接取率变化,进度可视化带动任务参与是这块环形图的存在意义。
renderRing在done与total同比例时的浮点取整会差一格,四舍五入加零点五偏移让半环渲染居中。Schedule的过渡循环在done回退时会死循环推进,循环条件要同时判断方向。ringSegs的二十四个节点全量预创建,节点显隐切换比动态创建省资源。进度百分比展示取整规则与环形填充一致,文字显示51%而环画一半的错位会被玩家截图。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 装备回收商 NPC 每天按评分收购玩家的装备,裁决之杖、骨玉权杖按攻击、持久加权打分,榜上只要前五名。数…
实战应用:用在哪里 沙巴克攻城是全服行会战的最高舞台:攻方砸开城门、抢占皇宫,守方依托城墙与复活点反打。规则设计的关键是节奏…
实战应用:用在哪里 影分身玩法给法师职业补上生存短板:危急时刻召唤四个影分身分担仇恨,敌人需要在六格范围内分辨真身,猜错就浪…
实战应用:用在哪里 组队邀请、行会宣战这类关键信令丢了没有兜底,玩家只能反复手点,高峰期体验很差。重试机制给信令加确认回执:…
实战应用:用在哪里 新资料片上线首日预约量常是日常十倍,一口气全开会让数据库与登录网关同时过载。滚动开区把开区动作排成队列:…
实战应用:用在哪里 百人同屏的沙巴克外围战场,每个玩家每秒跑动会触发数次位置更新,全部即时下发时广播量随人数平方增长,网关先…