创游世界广播使用速查卡
一句话摘要
创游世界广播机制的快速查询表,一问一答形式,帮助快速查阅广播的发送、接收、命名规范和常见问题。
适合谁阅读
- 需要快速查找广播用法的开发者
- 遇到「广播没效果」问题的创作者
- 想了解广播最佳实践的学习者
你将学到什么
- 广播的基本概念和使用方法
- 发送广播和接收广播的具体写法
- 广播的命名规范
- 广播的常见误区和避坑建议
- 广播与其他通信方式的对比
基础概念类
Q:广播是什么?
A:广播是一种「发消息给多个对象」的事件通知机制。发送者不需要知道谁在接收,接收者通过「监听」来响应消息。
Q:广播和普通函数调用有什么区别?
A:
- 普通调用:A 直接调用 B,B 必须存在
- 广播:A 发消息,BCDEF 谁在听谁响应,不需要知道对方在哪
Q:广播适合做什么?
A:
- UI 通知地图处理请求
- 事件通知(如敌人死亡、任务完成)
- 跨物体、跨层级通信
- 解耦不同模块
Q:广播不适合做什么?
A:
- 精确指定某个对象执行某事(应该用直接调用)
- 大量高频同步(会有性能问题)
- 跨地图通信(默认只在本地图生效)
发送广播类
Q:怎么发送广播?
A:
发送广播 "广播名称"Q:广播可以带参数吗?
A:可以。
发送广播 "道具_获得" 并携带数字 100
发送广播 "任务_完成" 并携带文本 "任务A"Q:UI 怎么发广播?
A:
当点击按钮时
发送广播 "请求购买"
结束Q:地图脚本怎么向 UI 发广播?
A:使用「向当前 UI 发广播」或「向地图发广播」。
当收到广播 "购买成功" 时
向当前 UI 发广播 "刷新界面"
结束接收广播类
Q:怎么接收广播?
A:添加「当收到广播时」触发时机。
当收到广播 "刷新界面" 时
刷新金币显示
结束Q:接收广播时怎么获取参数?
A:
当收到广播 "道具_获得" 并携带数字 时
获取道具数量
显示 "获得 " + 参数 + " 金币"
结束Q:同一个广播可以有多个接收者吗?
A:可以。所有监听该广播的脚本都会执行。
当收到广播 "敌人_死亡" 时 → 播放音效
当收到广播 "敌人_死亡" 时 → 刷新任务进度
当收到广播 "敌人_死亡" 时 → 统计击杀数Q:广播可以被其他地图的物体接收吗?
A:默认不行,只能被当前地图的物体接收。跨地图通信需要用玩家变量或系统属性。
命名规范类
Q:广播名大小写敏感吗?
A:不敏感,但建议统一风格(如全小写+下划线)。
Q:广播名怎么写比较好?
A:用语义化命名,表达「事件」或「意图」。
| ✅ 推荐 | ❌ 不推荐 |
|---|---|
道具_获得 | 刷新1 |
任务_完成 | 刷新2 |
玩家_移动 | abc |
商店_关闭 | test |
Q:广播名需要加前缀吗?
A:可以加系统前缀,如「模块名_功能」。
商店_购买任务_完成战斗_开始UI_刷新
场景应用类
Q:UI 和地图怎么通过广播通信?
A:推荐「UI 发请求 → 地图处理 → 地图发通知 → UI 刷新」模式。
// UI 层
当点击购买按钮时
发送广播 "请求购买" 并携带文本 "商品A"
结束
当收到广播 "购买成功" 时
刷新界面
结束
// 地图层
当收到广播 "请求购买" 时
处理购买逻辑
扣钱、发道具
发送广播 "购买成功"
结束Q:广播适合用在哪些系统?
A:
- 任务系统(任务完成广播)
- 成就系统(成就解锁广播)
- 商店系统(购买请求广播)
- 战斗系统(伤害/死亡广播)
- UI 刷新系统(界面更新广播)
Q:多人联机时广播有什么要注意的?
A:
- 每个玩家只运行自己的 UI 逻辑
- UI 只发一次广播,不要连续发多次
- 需要同步的数据用地图广播下沉
常见问题类
Q:广播发了但没效果?
A:检查清单:
- 广播名是否一致(包括大小写、空格)
- 接收脚本是否在「当收到广播时」触发时机下
- 接收者是否在当前地图
- 接收者在广播发送时是否还存在
Q:广播太多会导致什么问题?
A:
- 性能下降
- 难以追踪谁在响应
- 维护困难
建议:合并高频广播、控制广播频率、语义化命名。
Q:广播和指令调用有什么区别?
A:
| 特性 | 广播 | 指令调用 |
|---|---|---|
| 接收者数量 | 多个 | 单个 |
| 依赖关系 | 解耦 | 耦合 |
| 灵活性 | 高 | 低 |
| 性能 | 中等 | 高 |
| 适用场景 | 事件通知 | 精确控制 |
Q:可以用变量存广播名吗?
A:可以,但要注意广播名的作用范围。
新建局部变量 广播名 为 "道具_获得"
发送广播 广播名Q:广播可以嵌套吗?
A:可以,但要注意不要过度嵌套,否则调试困难。
当收到广播 "A" 时
发送广播 "B"
结束
当收到广播 "B" 时
发送广播 "C"
结束广播快速选择表
| 需求 | 广播写法 | 说明 |
|---|---|---|
| UI 请求地图处理 | 发送广播 "请求_xxx" | 地图层处理 |
| 地图通知 UI 刷新 | 向当前 UI 发广播 "刷新_xxx" | UI 层响应 |
| 多系统响应同一事件 | 发送广播 "事件_名称" | 各系统监听 |
| 传递数值参数 | 发送广播 "xxx" 并携带数字 100 | 带参数 |
| 传递文本参数 | 发送广播 "xxx" 并携带文本 "内容" | 带文本参数 |
概念关系速查
广播 = 事件通知机制
├── 发送方:发送广播 + 参数(可选)
├── 接收方:当收到广播时 + 参数(可选)
└── 作用:跨对象、解耦通信
广播类型:
├── 地图广播(当前地图可见)
├── UI 广播(UI 层发出/接收)
└── 向当前 UI 发广播(地图向 UI 发)
广播命名规范:
├── 语义化:表达事件/意图
├── 统一风格:全小写+下划线
└── 加前缀:模块名_功能相关页面
待验证问题
以下问题需要进一步验证:
| 问题 | 状态 | 验证方向 |
|---|---|---|
| 广播在特定版本下的性能表现 | 🔄 待验证 | 需要压测确认 |
| 广播链过长时的实际限制 | 🔄 待验证 | 需要大型项目测试 |
> 📝 说明:广播核心用法已稳定,进阶性能问题属于研究范畴。
后续优化方向
- [ ] 补充更多实战案例
- [ ] 增加广播性能测试方法
- [ ] 完善与自定义指令的对比说明
