Skip to content
写作:待补充更新:2026-05-16字数:—阅读:—维护:Azek431

创游世界广播命名规范与最佳实践

一句话摘要

本文档整理创游世界中广播的命名规范与使用最佳实践,帮助你建立清晰的广播命名体系,避免项目做大后广播命名混乱、难以维护的问题。

适合谁阅读

  • 项目越做越乱,想整理广播命名的创作者
  • 想学习如何正确使用广播解耦系统的开发者
  • 需要建立团队协作规范的进阶用户

你将学到什么

  • 广播命名的基本原则
  • 不同场景的命名建议
  • 广播使用的常见误区
  • 解耦设计的最佳实践
  • 项目广播架构建议

💡 如果你想快速查找广播用法,请查看:创游世界广播使用速查卡


为什么要关注广播命名

广播是创游世界中常用的跨对象通信机制。如果命名混乱:

  • 很难追踪「谁发了什么广播」
  • 重构时容易漏改、错改
  • 多人协作时沟通成本飙升
  • 排查问题无从下手

好的广播命名 = 项目可维护性的基石。

📚 相关阅读:广播机制深度解析 - 广播原理详解


广播命名基本原则

原则一:表达「事件」或「意图」,而非「实现」

✅ 推荐命名❌ 不推荐命名
道具_获得_玩家扣钱加道具更新UI
刷新_商店界面读取金币读取道具改值
敌人_死亡_通知发送广播1
请求_打开背包打开那个界面
任务_完成_通知刷新任务

好的广播名 = 一句话能说清楚「发生了什么」或「想要做什么」

原则二:使用统一的分隔符

推荐使用下划线_作为分隔符:

动作_对象_类型
事件_对象_状态
请求_目标_操作
通知_对象_内容

原则三:同类型广播使用统一的命名模式

如果你的项目有:

  • 道具获得:道具_获得
  • 道具使用:道具_使用
  • 道具丢弃:道具_丢弃

那这三个广播就应该保持一致的命名风格,而不是:

  • 道具_获得
  • 使用道具广播
  • discard_item

场景化命名建议

UI 交互类广播

场景推荐命名说明
玩家点击购买按钮请求_购买_道具UI发给地图
玩家点击使用道具请求_使用_道具UI发给地图
玩家点击对话选项对话_选项_选择UI发给对话系统
玩家关闭界面请求_关闭_界面UI发给地图

📚 相关阅读:UI系统与切换机制解析 - UI系统详解

状态变化类广播

场景推荐命名说明
玩家获得道具道具_获得_玩家地图发给所有需要知道的
玩家消耗金币金币_消耗_玩家地图发给UI
敌人死亡敌人_死亡_通知物体发给地图
任务完成任务_完成_通知任务系统发给UI

📚 相关阅读:创游世界战斗系统设计入门 - 战斗系统

UI 刷新类广播

场景推荐命名说明
刷新金币显示刷新_界面_金币地图发给UI
刷新背包显示刷新_界面_背包地图发给UI
刷新生命条刷新_界面_生命地图发给UI
刷新任务列表刷新_界面_任务任务系统发给UI

📚 相关阅读:创游世界UI数据同步架构 - UI同步架构

流程控制类广播

场景推荐命名说明
开始战斗战斗_开始_通知地图发给所有战斗参与者
战斗结束战斗_结束_通知地图发给所有
进入下一波波次_进入_N地图发给怪物生成器
游戏胜利游戏_胜利_通知系统发给全局

📚 相关阅读:创游世界商店系统实战设计指南 - 商店系统


广播使用误区与正确做法

误区一:一个广播做太多事

❌ 错误做法:
发送广播"购买道具"
→ 扣钱
→ 加道具
→ 刷新背包
→ 刷新金币
→ 播放音效

这个广播承担了太多语义,广播名称也过于笼统。
✅ 正确做法:
UI 发送广播 "请求_购买_道具"

地图脚本处理:扣钱、判断库存、扣除金币

地图脚本发送广播 "道具_获得_玩家"(如果购买成功)

收到 "道具_获得_玩家" 后:
  - 背包脚本处理道具入库
  - 音效脚本播放获得音效

UI 收到 "道具_获得_玩家" 后:
  - 刷新背包显示
  - 刷新金币显示

分解后的广播职责更清晰,排查问题更容易。

误区二:广播里携带太多参数

❌ 不推荐:
发送广播 "道具获得",参数:道具ID、道具数量、金币变化、当前金币余额...

→ 广播携带太多数据,导致广播职责不清晰
→ 参数一多,监听者不知道该用哪个
→ 后续增加新参数时要改所有发送和接收的地方
✅ 推荐:
发送广播 "请求_购买_道具",参数:道具ID、数量

地图处理后,发送 "道具_获得_玩家",参数:道具ID、数量

如果金币不足,发送 "请求_失败_金币不足"

每次广播只携带必要的、最小化的参数。

📚 相关阅读:脚本作用域与数据流深度研究 - 数据分层

误区三:命名不一致

同一事件出现多种命名问题
道具_获得部分地方用
获得道具部分地方用
item_get混用英文
收到道具通知部分地方用

后果:广播追踪困难,不知道哪些地方在监听、哪些地方在发送。

建议:在项目初期就制定广播命名表,所有人统一使用。

📚 相关阅读:创游世界项目维护与代码组织规范 - 项目维护


项目广播架构建议

推荐分层架构

┌─────────────────────────────────────────┐
│                  UI 层                   │
│  负责:显示、接收输入、发送请求广播      │
└──────────────────┬──────────────────────┘
                   │ 发送请求广播

┌─────────────────────────────────────────┐
│                地图层                    │
│  负责:真值处理、公共逻辑、状态管理      │
│  收到请求 → 处理 → 发送状态变化广播     │
└──────────────────┬──────────────────────┘
                   │ 发送状态变化广播
          ┌───────┴───────┐
          ↓               ↓
┌─────────────────┐ ┌─────────────────┐
│     UI 层       │ │    物体层        │
│  刷新显示       │ │  各自处理逻辑    │
└─────────────────┘ └─────────────────┘

📚 相关阅读:创游世界广播驱动项目结构实战 - 广播架构实战

广播流向原则

方向广播类型示例
UI → 地图请求/意图类请求_购买请求_使用
地图 → UI刷新/通知类刷新_界面状态_更新
地图 → 物体指令/事件类敌人_死亡波次_进入
物体 → 地图事件上报类道具_拾取伤害_造成

命名规范参考表

前缀规范

前缀用途示例
请求_UI/对象向地图发起的操作请求请求_购买请求_打开
通知_系统向多方告知事件通知_游戏开始通知_切换地图
刷新_通知UI刷新显示刷新_界面_金币刷新_背包
指令_指令性广播,让接收方执行动作指令_播放动画指令_生成怪物
状态_状态变化通知状态_死亡状态_激活

常用后缀

后缀用途示例
_玩家广播目标是玩家相关道具_获得_玩家金币_变化_玩家
_敌人广播目标是敌人相关敌人_死亡_通知敌人_受伤_通知
_界面广播目标是UI界面刷新_界面_背包刷新_界面_任务
_地图广播目标是地图层地图_切换_通知地图_初始化

📚 相关阅读:创游世界新手避坑完全指南 - 广播避坑


常见问题

Q:一个功能应该用几个广播?

A: 取决于功能复杂度。一个简单的「购买道具」功能可能需要:

  • 请求_购买_道具(UI → 地图)
  • 道具_获得_玩家(地图 → 相关系统)
  • 刷新_界面_金币(地图 → UI)
  • 刷新_界面_背包(地图 → UI)

关键原则是「广播表达意图,不表达实现」。

📚 相关阅读:常见问题与避坑指南 - 问题解决

Q:广播名称太长怎么办?

A: 可以适当简化,但保持语义完整:

  • 复杂项目:道具_获得_玩家_通知
  • 中等项目:道具_获得_通知
  • 简单项目:获得道具

但不要简化为「广播1」「按钮1」这样完全无意义的名称。

Q:多人协作时怎么统一广播命名?

A: 建议:

  1. 在项目初期制定《广播命名表》
  2. 所有广播命名必须查表,不允许自创
  3. 新增广播需要登记到表中
  4. 定期 review 广播使用情况,合并重复命名

📚 相关阅读:创游世界项目维护与代码组织规范 - 项目维护


相关页面

脚本系统

教程资料

项目设计

导航入口


待验证问题

以下问题需要进一步验证:

问题状态验证方向
广播参数数量是否有性能影响🔄 待验证需要压测确认
广播嵌套调用是否有深度限制🔄 待验证需要实际测试

📝 说明:广播命名规范已稳定,进阶行为属于研究范畴。

后续优化方向

  • [ ] 补充更多游戏类型的广播命名示例
  • [ ] 添加典型项目结构的广播命名模板
  • [ ] 补充团队协作时的广播管理规范

最后更新:2026-06-10维护者:Azek431

参与维护

发现文档问题?

你可以编辑页面、提交反馈,或复制链接给维护者,帮助这个资料库继续变好。

由 Azek431 整理与维护 | 基于 MIT 许可证开源