主界面的顶部区域是黄金位置:活动入口、邮件提醒、签到角标都挂在这里。SL:Attach_MainTop 提供了标准化的挂载点——挂件跟随主界面缩放、不遮挡核心操作、开关随时可控,挂件的开发从此有章可循。
---顶部挂件:Attach_MainTop 的标准挂载
function Widget.mount()
local holder = SL:Attach_MainTop()
local btn = GUI:Button_Create(holder, "act_entry", -60, 4)
GUI:Button_setTitleText(btn, "限时活动")
GUI:addOnClickEvent(btn, function()
SL:SendNetMsg(MSGID.OPEN_ACTIVITY, 0, 0, 0, "")
end)
-- 未读角标:有活动时点亮
Widget.badge = GUI:Text_Create(holder, "badge",
-20, 20, 10, "#FF4444", "!")
return holder
end
Attach_MainTop 返回顶部的挂载容器:挂件以负坐标从右侧排布,跟随主界面的缩放与安全区自动适配——不同分辨率的适配问题由挂载点统一解决。挂件的层级在聊天与技能栏之上、弹窗之下,位置的资源不与核心操作冲突。角标的状态由消息驱动:有未参与的活动时点亮感叹号,参与后熄灭,提醒的节奏克制。
---挂件的显隐:用户的可控权
function Widget.toggle(visible)
GUI:setVisible(Widget.holder, visible)
end
---多挂件的错位排布:避免互相覆盖
function Widget.layout()
local x = -60
for _, w in ipairs(Widget.active) do
w.node:SetPosition(x, 4)
x = x - 70
end
end
多个挂件的排布用统一的布局器:每个挂件占 70 像素的槽位,从右向左错位排开——活动、邮件、商城三个挂件互不覆盖。挂件的显隐由用户的设置控制:嫌打扰的玩家一键隐藏,隐藏的状态按账号记忆。挂件的点击热区与挂载的边界对齐,误触率的埋点监控热区设计的合理性。挂件的内容更新走消息驱动:活动状态的变更推送时刷新角标与文案,挂件永远显示当下的状态而不是打开时的旧值。
挂件的渲染层级抽检:弹窗、聊天、技能栏的遮挡关系逐层验证;挂件的点击热区与误触率统计,误触的高发提示位置或大小的调整。
挂件的坐标曾经按固定分辨率写死,宽屏下挂件悬空在界面外,锚点绑定为右上相对定位。挂件的显隐曾经不记忆,每次登录都恢复默认显示,用户设置的持久化补上。角标的点亮条件曾经与活动的实际状态脱节,过期的活动还挂着红点,状态的事件驱动刷新。
挂件的槽位注册制:新挂件的接入申请槽位,避免位置的无序竞争。挂件的显隐设置进账号的偏好存档,多端体验一致。高频活动的挂件支持临时上架,档期结束自动撤下。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
设计初衷 组队打怪的经验分配是组队体验的核心:均分让划水者搭便车,纯贡献分配让辅助职业吃亏。贡献权重的设计目标:按实际贡献分…
设计初衷 坐骑系统的死穴是"买了就不用管"。坐骑长线:喂养、训练、共鸣三条培养线并行——坐骑从"一次买断"变成"持续投入"。…
业务场景 新图首杀季:一天 60 个首杀全发播报则世界频道被刷屏。限流策略:播报队列每分钟最多 3 条,积压进入队列顺延,超…
业务场景 富矿点被固定队伍霸占。矿点占领:行会发起占领后收益加成 50%,占领 4 小时到期自动易主。核心数据:Mine_I…
设计初衷 回流玩家的最大障碍不是数值落后,是社交断层:离开 90 天后,好友列表里一半人退游、行会换了会长、固定队散了。回归…
学员常见误区 把 30 份奖励分给 4 人小组,学员写 total / 4 得到 7.5,再拿 7.5 去做循环边界——Lu…