换装决策靠对比:悬停背包里的新裁决之杖,浮窗并排显示新旧十二项属性,提升绿字下降红字。对比浮窗是装备驱动的核心体验件,数据全部来自本地缓存,零请求即时渲染。
悬停ItemBox时按部位取身上装备属性,与新装备逐项做差,构建双列浮窗。
local ATTRS = { "atk", "mac", "dc", "sc", "hp", "mp" }
GUI:addOnClickEvent(newItemBox, function()
local base = SL:GetMetaValue("EQUIP_ATTR", 1)
local row = 10
for i, key in ipairs(ATTRS) do
local diff = (tonumber(newAttrs[key]) or 0) - (tonumber(base[key]) or 0)
local color = diff >= 0 and { 120, 220, 120 } or { 230, 90, 90 }
local txt = GUI:Text_Create(popup, "cmp" .. i, 12, row, key .. " " .. diff, 15, color)
row = row + 22
end
GUI:setVisible(popup, true)
end)
移开即隐藏并清理子控件,重建成本远低于逐项刷新,浮窗保持无残留。
local function hidePopup()
GUI:setVisible(popup, false)
for i = 1, #ATTRS do
local child = GUI:getChildByName(popup, "cmp" .. i)
if child ~= nil then GUI:removeFromParent(child) end
end
end
六项属性三升三降的样例装备验证着色方向,悬停移开循环百次无残留。埋点浮窗打开次数与换装成交率的相关性,作为交互优化的依据。
GUI:getChildByName找不到时返回nil要先判,移除空引用直接报错中断浮窗逻辑。GetMetaValue的装备部位参数从0还是1起算要与文档核对,差一位对比的是另一件装备,玩家看着绿字换装实为降配。颜色值构造方式按引擎版本走表或三参,混用会显示黑色。浮窗位置贴屏幕边缘时被裁掉半边,弹出前按屏幕尺寸做翻转,贴边翻转是浮窗类组件的通用功课。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 排行榜卡死拖累登录、成就推送挤占带宽,这些非核心功能出问题时最需要的是一个总闸。服务降级预案定义了核心链…
实战应用:用在哪里 单件装备的属性提升有限,套装共鸣让多件装备产生化学反应:穿戴同系三件以上触发共鸣属性,五件触发全局光环。…
实战应用:用在哪里 同一账号在两台设备同时在线,一台打怪一台交易,是盗号者测试密码后的标准动作。多设备在线检测在登录环节检查…
实战应用:用在哪里 老服合并、机房迁移、数据分库改造,都涉及角色数据的批量搬家。数据迁移的核心是搬运过程中不断服、不丢数据、…
实战应用:用在哪里 沙影之路的暗之Boss是行会实力的试金石:真身与三个镜像随机分布在四个祭坛,只有击杀真身才有掉落,镜像被…
实战应用:用在哪里 攻城战最容易变成人海推门的无脑玩法。攻城拔寨将城门攻坚设计为三线战术:正面强攻吸引火力、侧翼工程车破城、…