Reference
UI Click Binding Field Guide
当前 HappyMahjong 新功能不按 NGUI 开发。看到 UIEventListener 不代表这是 NGUI;它主要作为兼容且方便的点击事件绑定工具保留。
先记住这条
项目事实: 当前项目里已经没有需要按 NGUI 范式开发的新 UI。NGUI 相关目录 / 类主要是历史兼容残留。新需求应优先沿用当前模块的 UGUI / 项目 UI 系统、UIUtil、PopUpManager、UIEventListener 和 Empty Click 约定。
判断表
| 看到什么 | 真实含义 | 应该怎么做 | 不要怎么做 |
|---|---|---|---|
Canvas, Image, Button, Text, RectTransform | UGUI / Unity UI 对象 | 沿用当前模块的 UGUI 结构和绑定方式。 | 不要新造一套孤立 Canvas 或绕过项目弹窗系统。 |
UIEventListener.Get(go).onClick | 项目保留的点击绑定工具,不等于 NGUI 新开发 | 可按相似代码绑定点击,注意解绑、重复绑定和点击音效参数。 | 不要因为路径含 NGUI 就判断需求要按 NGUI 范式重写。 |
EmptyClick, emptyClick, CloseEmptyClick, Empty Click | 专门接收点击的空对象 / 遮罩对象 | 用来承接空白区域点击、关闭弹窗、阻断穿透、背景点击等。 | 不要删除;不要把业务内容挂到 Empty Click 上。 |
UIUtil.LoadPrefabCallBack, UIUtil.Instantiate | 项目资源 / UI 加载入口 | 沿用它加载和实例化 UI。 | 不要新写 Resources.Load 或裸 Object.Instantiate。 |
PopUpManager | 项目弹窗管理系统 | 通过它弹窗、关窗、处理层级。 | 不要直接 SetActive(true) 当弹窗系统。 |
UILabel, UISprite, UIPanel | 历史兼容 / 遗留符号 | 如果现有模块仍出现,先问 owner 或沿用局部相似写法。 | 不要为新功能主动引入 NGUI 组件。 |
Empty Click 是什么
弹窗点击区域示意
弹窗内容
按钮、文案、道具、输入框
按钮、文案、道具、输入框
外层
Empty Click
透明/空对象,接收背景点击或阻断穿透
透明/空对象,接收背景点击或阻断穿透
Empty Click 常用于“点空白关闭”“点遮罩不穿透”“背景点击触发关闭”等场景。它是交互接收层,不是业务内容层。
常见绑定形态
// 普通点击绑定:沿用项目相似代码
UIEventListener.Get(closeBtn.gameObject, ClickableTypeDef.CloseSoundType).onClick = OnClickClose;
// Empty Click:接收空白区域 / 遮罩点击
var emptyClick = transform.Find("EmptyClick");
if (emptyClick != null)
{
UIEventListener.Get(emptyClick.gameObject).onClick = OnClickClose;
}
给 agent 的判断 prompt
先不要修改代码。请分析这个 UI 的点击绑定方式。
请输出:
1. 点击对象路径,例如 Btn_Close / EmptyClick / CloseEmptyClick。
2. 使用的是 Button.onClick、UIEventListener.Get(...).onClick,还是其他方式。
3. Empty Click 是否用于背景点击、关闭弹窗或阻断点击穿透。
4. UI 是否通过 UIUtil 加载,弹窗是否通过 PopUpManager 管理。
5. 如果要修改点击逻辑,最小修改文件是什么。
6. 是否存在重复绑定、未解绑、页面销毁后回调风险。
所有结论附文件路径。不确定处标注“推测”。
课堂口令: UIEventListener 是点击绑定工具,不是 NGUI 技术栈判断依据。Empty Click 是接点击的空对象,不要误删,也不要塞业务内容。