CHUAN2 DEV ENGINE
996 正版授权研发中心 · 360 授权合作教学中心 · 抖音传奇直播合作授权 · 快手推广运营商授权
OFFICIAL LICENSED ACADEMY 查验官方授权证书 →
// 威海旷世互娱教学基地 · 技术文章
前端案例

【前端案例】GMBoxUI:GM 面板的按钮矩阵实现

2026-09-21 11:35 作者:996 技术组 前端案例

实战应用:用在哪里

案例库里的 GMBoxUI.lua 是一个完整的 GM 面板实现:按钮矩阵、指令输入、结果回显三区布局。分析这个案例能学到工具类界面的标准结构——按钮的定义表驱动、点击事件的统一分发、执行结果的反馈回路。

按钮的定义表

lua

---GM 面板的按钮定义(来自 GMBoxUI.lua 的结构整理)
local GM_BUTTONS = {
    { name = "满血",   cmd = "hp",      arg = "100%" },
    { name = "满蓝",   cmd = "mp",      arg = "100%" },
    { name = "解卡",   cmd = "recall",  arg = "" },
    { name = "清任务", cmd = "cleartask", arg = "" },
}
function GMBoxUI.build(panel)
    for i, def in ipairs(GM_BUTTONS) do
        local btn = GUI:Button_Create(panel, "gmBtn" .. i, x(i), 40, "gm_btn.png")
        GUI:Button_setTitleText(btn, def.name)
        GUI:addOnClickEvent(btn, function()
            SL:SendNetMsg(MSGID.GM_EXEC, 0, 0, 0, def.cmd .. "|" .. def.arg)
        end)
    end
end

按钮用定义表驱动而不是逐个手写:加一个 GM 功能就是加一行配置,界面的扩展成本是常量。点击回调统一走 SL:SendNetMsg 发指令到服务端,按钮本身不执行任何逻辑,指令的权威在服务端。

结果的回显

lua

---执行结果的回显区
SL:RegisterLuaNetMsg(MSGID.GM_RESULT, function(p1, p2, p3, sMsg)
    local logText = GUI:getChildByName(gmPanel, "resultLog")
    GUI:Text_setString(logText, sMsg .. "\n" .. GUI:Text_getString(logText))
end)

执行结果从服务端推回后插入回显区的顶部,最近的操作始终在最上面。GM 面板的案例教会三件事:定义表驱动界面、按钮只发指令不执行逻辑、结果回显回路。这三条适用于所有工具类界面的开发。

验证与监控

按钮的使用频次统计进 GM 操作日志,高频按钮的位置调整提升操作效率。

踩坑记录

按钮的防连击缺失曾经一秒发出十几次相同指令,点击后的禁用窗口是工具界面的标配。GM 面板的入口权限曾经只在打开时校验,面板常驻后台的玩家在降权后仍能点击按钮,每次点击都重新校验才是安全的做法。

上线要点

GM 面板的按钮按使用频率排序,高频操作放第一屏。指令的参数输入框与按钮分离,带参数的指令点击后弹出参数确认。面板的打开权限与按钮的执行权限是两层校验,界面的可见不等于可执行。

本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。

作者履历与出处

本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。

← 返回文章地图返回研学路径

最新技术文章 · 实战干货

LATEST ARTICLES

全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →

网络通信聊天聚合

【网络通信】跨服聊天话题聚合:多服聊天的话题合并设计

实战应用:用在哪里 跨服开放后,各服的世界频道各自为政,热门话题被服务器墙分隔。话题聚合方案:带话题标签的消息汇聚到跨服频道…

2026-09-22 17:43 996 技术组
数据存储行为数据周报

【数据存储】玩家行为周报摘要:行为数据的聚合存储设计

实战应用:用在哪里 运营要的是“这周谁打了副本、谁在挂机、谁在交易”,不是每天几万条的原始行为流。周报摘要方案:行为流水按玩…

2026-09-22 17:43 996 技术组
界面UI聊天轮盘

【界面UI】聊天快捷短语轮盘:常用语轮盘的交互设计

实战应用:用在哪里 战斗中打字报点来不及,快捷短语轮盘让玩家按住轮盘键滑向常用语松手即发:集合、撤退、求奶、集火左,八条槽位…

2026-09-22 17:43 996 技术组
前端接口手柄适配

【前端接口】游戏手柄按键映射:外设适配的映射实现

实战应用:用在哪里 部分玩家用手柄玩传奇,键位习惯各不相同。按键映射方案:手柄的摇杆、十字键、肩键映射到游戏动作,映射表玩家…

2026-09-22 17:43 996 技术组
Lua实战闭包封装

【Lua实战】闭包封装状态:计数器与工厂函数的实战应用

实战应用:用在哪里 模块级的计数器、限流器都面临一个问题:状态存全局容易被别的代码改坏。闭包把状态封在函数的作用域里,外部只…

2026-09-22 17:43 996 技术组
玩法设计师徒副本

【玩法设计】师徒双人副本:协同关卡的匹配与奖励设计

实战应用:用在哪里 师门任务的日常共同任务做成师徒双人副本:师父带徒弟进入专属关卡,关卡机制要求两人配合——师父扛伤开门、徒…

2026-09-22 17:43 996 技术组