创游世界触发时机速查卡
一句话摘要
创游世界触发时机的一问一答速查表,快速查阅各触发时机的触发条件、对应组件和典型使用场景。
适合谁阅读
- 需要快速查找某个触发时机用法的开发者
- 正在写脚本但不确定该选哪个触发时机的创作者
- 复习触发时机体系的初学者
你将学到什么
- 各触发时机的触发条件
- 对应需要的组件
- 典型使用场景
- 常见错误与正确做法
基础概念类
Q:触发时机是什么?
A:触发时机决定了脚本在"什么情况下"被执行。可以理解为脚本的「入口条件」。
Q:触发时机写在哪儿?
A:写在脚本编辑器的最顶部,每个脚本块的第一行就是触发时机。例如:当点击时 或 当收到广播时。
Q:没有触发时机会怎样?
A:脚本不会执行。没有触发时机的积木块是「死代码」。
Q:可以同时有多个触发时机吗?
A:可以。一个脚本可以有多个触发时机,每个触发时机对应一套积木块逻辑。
事件型触发时机
Q:「当被创建时」是什么?
A:物体在地图上被创建(或地图加载时)立即触发,只执行一次。
对应组件:不需要特定组件,所有物体都有。
典型场景:
- 初始化变量
- 设置初始状态
- 播放开场动画
示例:
当被创建时
设置自身属性1 为 0
显示 "初始化完成"Q:「当被销毁时」是什么?
A:物体被销毁时触发,常用于清理关联数据或播放死亡特效。
对应组件:不需要特定组件。
典型场景:
- 清理子物体
- 发送广播通知其他系统
- 播放销毁动画
示例:
当被销毁时
发送广播 "敌人_死亡" 并携带文本 "敌人A"Q:「当受到伤害时」是什么?
A:物体受到伤害时触发,需要物体有「生命组件」。
对应组件:生命组件
典型场景:
- 播放受伤动画
- 判断是否死亡
- 触发反击
示例:
当受到伤害时
播放动效 "受伤闪烁"
发送广播 "玩家_受伤" 并携带数字 生命组件.当前生命Q:「当死亡时」是什么?
A:物体生命值降为0时触发,需要生命组件。
对应组件:生命组件
典型场景:
- 播放死亡动画
- 触发死亡广播
- 掉落物品
示例:
当死亡时
播放动画 "死亡"
销毁自身交互型触发时机
Q:「当被点击时」是什么?
A:玩家点击物体时触发,需要物体有「可互动组件」。
对应组件:可互动组件
典型场景:
- NPC对话
- 打开物品
- 触发机关
示例:
当被点击时
显示对话框 "你好!"
发送广播 "NPC_对话"Q:「当互动按钮被按下时」是什么?
A:玩家按下互动按钮时触发,同样需要可互动组件。
对应组件:可互动组件
典型场景:
- 与物体交互
- 拾取道具
- 使用物品
示例:
当互动按钮被按下时
发送广播 "道具_拾取" 并携带文本 "金币"
销毁自身Q:「当接近时」是什么?
A:玩家接近物体时触发,需要可互动组件。
对应组件:可互动组件
典型场景:
- 显示提示文字
- 自动触发剧情
- 接近解锁
示例:
当接近时
显示提示 "按E键交互"Q:「当按键被按下时」是什么?
A:玩家按下指定按键时触发。
对应组件:不需要特定组件
典型场景:
- 快捷键功能
- 特殊操作
- 调试功能
示例:
当按键被按下时 "E"
发送广播 "使用道具"广播型触发时机
Q:「当收到广播时」是什么?
A:收到指定名称的广播时触发,是解耦通信的核心机制。
对应组件:不需要特定组件
典型场景:
- UI通知地图处理
- 多对象响应同一事件
- 跨系统通信
示例:
当收到广播 "刷新UI" 时
显示 "金币:" + 系统属性1Q:广播可以带参数吗?
A:可以。通过「并携带数字/文本」可以传递数据。
示例:
发送广播 "道具_获得" 并携带数字 100
当收到广播 "道具_获得" 并携带数字 时
获取道具数量
显示 "获得 " + 参数 + " 金币"Q:广播名称大小写敏感吗?
A:不敏感,但建议统一命名风格(如全小写+下划线)。
循环型触发时机
Q:「重复执行直到」是什么?
A:条件为真时重复执行,一旦条件满足就停止。
对应组件:不需要特定组件
典型场景:
- 持续检测状态
- 等待某个事件发生
- 动画循环
示例:
重复执行直到 自身属性1 = 10
等待 0.5 秒
设置自身属性1 为 自身属性1 + 1
显示 "计数完成"Q:「重复每隔X秒」是什么?
A:每隔指定秒数执行一次,常用于定时任务。
对应组件:不需要特定组件
典型场景:
- 定时扣血
- 倒计时
- 定期刷新
示例:
重复每隔 3 秒
发送广播 "检查点_刷新"Q:无限循环和「重复执行直到」有什么区别?
A:无限循环会一直执行,需要在内部手动停止;「重复执行直到」会在条件满足时自动停止。
重要:无限循环内必须有「等待」积木,否则会导致游戏卡死。
碰撞型触发时机
Q:「当碰撞时」是什么?
A:物体与其他物体发生碰撞时触发,两个物体都需要物理组件。
对应组件:物理组件
典型场景:
- 子弹击中敌人
- 拾取道具
- 触发机关
示例:
当碰撞时
如果 碰撞对象.标签 = "敌人" 那么
发送广播 "子弹_命中" 并携带文本 "敌人"
销毁自身Q:碰撞检测需要注意什么?
A:
- 两个物体都需要有物理组件
- 物理组件的碰撞层级要匹配
- 至少有一个物体不能是「固定」的
组件型触发时机
Q:组件有哪些触发时机?
A:不同组件有不同的触发时机,常见的有:
| 组件 | 触发时机 |
|---|---|
| 生命组件 | 当受到伤害时、当死亡时、当生命值改变时 |
| 武器槽组件 | 当武器切换时、当使用武器时 |
| 可互动组件 | 当被点击时、当接近时、当互动按钮被按下时 |
| 开关组件 | 当开关切换时 |
| 机关组件 | 当机关触发时 |
Q:自定义组件可以添加触发时机吗?
A:可以。自定义组件可以添加触发时机,如「当执行"指令1"时」。
示例:
自定义组件:冷却管理
触发时机:
当执行"开始冷却"时
设置自身属性1 为 1
重复执行直到 自身属性1 = 0
等待 1 秒
设置冷却时间为 冷却时间 - 1UI型触发时机
Q:UI脚本有哪些触发时机?
A:UI脚本的触发时机与普通物体略有不同,常见的有:
| 触发时机 | 说明 |
|---|---|
| 当UI初始化时 | UI加载时触发 |
| 当UI按钮被点击时 | 按钮被点击时 |
| 当收到广播时 | 收到地图发来的广播时 |
Q:UI可以发广播吗?
A:可以。UI可以通过「向地图发广播」或「向当前UI发广播」发送消息。
示例:
当UI按钮被点击时
发送广播 "请求_购买" 并携带文本 "物品1"常见问题类
Q:触发时机写错了怎么办?
A:
- 点击当前触发时机
- 从下拉菜单中选择正确的触发时机
- 保存
Q:脚本不执行怎么排查?
A:检查清单:
- 是否有触发时机(没有则不会执行)
- 触发时机是否写对(如「当点击时」需要可互动组件)
- 物体是否有对应组件
- 是否保存了脚本
Q:可以同时有多个触发时机吗?
A:可以,每个脚本可以有多个触发时机分支。
示例:
触发时机1:当被创建时
初始化代码
触发时机2:当收到广播 "刷新" 时
刷新代码Q:触发时机可以嵌套吗?
A:触发时机不能嵌套,但一个触发时机内的积木块可以有条件判断和循环。
Q:触发时机有优先级吗?
A:触发时机本身没有固定优先级,按触发先后顺序执行。同一帧内可能有多个触发时机同时触发。
触发时机快速选择表
| 需求 | 推荐触发时机 | 需要组件 |
|---|---|---|
| 初始化 | 当被创建时 | 无 |
| 玩家点击物体 | 当被点击时 | 可互动 |
| 玩家接近物体 | 当接近时 | 可互动 |
| 受伤处理 | 当受到伤害时 | 生命 |
| 死亡处理 | 当死亡时 | 生命 |
| 事件通知 | 当收到广播时 | 无 |
| 持续检测 | 重复执行直到 / 重复每隔X秒 | 无 |
| 碰撞检测 | 当碰撞时 | 物理 |
| UI交互 | 当UI按钮被点击时 | 无 |
| 等待变化 | 当属性改变时 | 无 |
概念关系速查
触发时机 = 脚本的入口条件
↓
事件型:当被创建时/当死亡时/当受到伤害时
交互型:当被点击时/当接近时/当互动按钮被按下时
广播型:当收到广播时
循环型:重复执行直到/重复每隔X秒
碰撞型:当碰撞时
组件型:各组件特有的触发时机
UI型:当UI初始化时/当UI按钮被点击时
↓
积木块 = 在触发时机下执行的具体逻辑相关页面
待验证问题
以下问题需要进一步验证:
| 问题 | 状态 | 验证方向 |
|---|---|---|
| 某些组件特有的触发时机是否完整 | 🔄 待验证 | 需要官方文档确认 |
| 新版本是否新增了其他触发时机 | 🔄 待验证 | 需要版本更新日志 |
| 触发时机的执行优先级细节 | 🔄 待验证 | 需要实际测试 |
📝 说明:触发时机核心用法已稳定,进阶细节需要持续跟踪。
后续优化方向
- [ ] 补充更多实际脚本示例
- [ ] 添加各触发时机的截图说明
- [ ] 完善组件型触发时机的详细说明
