创游世界触发时机完全指南
一句话摘要
创游世界脚本触发时机的完整指南,涵盖所有触发时机的分类、用途、配合组件、使用场景和常见问题,帮助理解脚本「什么时候会执行」。
适合谁阅读
- 不理解触发时机作用的新手
- 想知道有哪些触发时机可以用的创作者
- 需要查找特定触发时机用法的开发者
你将学到什么
- 触发时机的基本概念
- 所有触发时机的分类
- 每个触发时机需要什么组件
- 触发时机的使用场景
- 触发时机的常见问题
核心结论
- 触发时机 = 脚本的「入口」:没有触发时机,积木块永远不会执行
- 触发时机决定「什么时候执行」:开始时=加载时,点击时=被点击时,碰撞时=碰撞时
- 触发时机需要配合组件:某些触发时机必须配合特定组件才能生效
触发时机分类总览
| 分类 | 触发时机 | 触发条件 | 需要的组件 |
|---|---|---|---|
| 启动类 | 当开始时 | 地图加载时 | 无 |
| 输入类 | 当点击时 | 物体被点击 | 可互动组件 |
| 当碰撞时 | 物体发生碰撞 | 物理组件 | |
| 当接近时 | 物体靠近时 | 可互动组件 | |
| 事件类 | 当广播时 | 收到广播消息 | 无 |
| 当属性改变时 | 属性值变化 | 无 | |
| 当定时器到期时 | 定时器触发 | 无 | |
| 战斗类 | 当生命值改变时 | 生命值变化 | 生命组件 |
| 当死亡时 | 生命值归零 | 生命组件 | |
| 当发射子弹时 | 子弹发射 | 子弹组件 | |
| 当子弹击中时 | 子弹命中 | 子弹组件 | |
| 物理类 | 当受力时 | 物体受到力 | 物理组件 |
| 当停止时 | 物体停止移动 | 物理组件 | |
| UI类 | 当UI点击时 | UI元素被点击 | 无 |
| 当UI显示时 | UI被显示 | 无 | |
| 当UI隐藏时 | UI被隐藏 | 无 | |
| 联机类 | 当玩家加入时 | 玩家加入游戏 | 无 |
| 当玩家离开时 | 玩家离开游戏 | 无 |
一、启动类触发时机
1.1 当开始时
触发条件:地图加载完成时
需要的组件:无
典型用途:
- 初始化变量
- 显示欢迎提示
- 设置初始UI
- 预加载资源
示例:
当 开始时
设置玩家变量1 为 100
显示 "欢迎来到游戏" 在 开始UI上
广播 "初始化完成"注意:
- 切换地图后重新触发(地图重新加载)
- 适合放初始化逻辑,不要放游戏逻辑
二、输入类触发时机
2.1 当点击时
触发条件:玩家点击带有「可互动组件」的物体
需要的组件:可互动组件
典型用途:
- NPC对话
- 宝箱开启
- 按钮触发
- 商店入口
示例:
当 点击时
显示 对话框UI
设置对话框文字为 "你好,我是NPC"注意:
- 物体必须有「可互动组件」
- 点击范围可以通过组件参数调整
2.2 当碰撞时
触发条件:两个有物理组件的物体发生碰撞
需要的组件:物理组件(双方都需要)
典型用途:
- 踩到陷阱扣血
- 捡到道具
- 到达传送点
- 触发机关
示例:
当 碰撞时
如果 碰撞对象 是 道具 那么
设置玩家变量1 为 玩家变量1 + 1
销毁 当前物体
广播 "刷新道具UI"
结束注意:
- 双方物体都需要有物理组件
- 物理组件的「是否可碰撞」要开启
- 碰撞触发时机可能多次触发,需要加条件判断
2.3 当接近时
触发条件:玩家接近带有「可互动组件」的物体
需要的组件:可互动组件
典型用途:
- 靠近自动触发
- 区域检测
- 自动对话
示例:
当 接近时
显示 "按点击键进行交互" 在 提示UI上注意:
- 需要物体有「可互动组件」
- 接近范围可以通过组件参数调整
三、事件类触发时机
3.1 当广播时
触发条件:收到其他物体发送的广播消息
需要的组件:无
典型用途:
- 跨物体通信
- 解耦不同模块
- 事件驱动逻辑
示例:
当 广播 "刷新UI" 时
设置金币UI文字为 "金币:" + 玩家变量1命名建议:使用统一的小写+下划线命名,如 refresh_ui
注意:
- 只在同一地图内有效
- 广播名建议统一风格
3.2 当属性改变时
触发条件:指定属性值发生变化
需要的组件:无
典型用途:
- 监听变量变化
- 自动响应状态改变
- 数据同步
示例:
当 属性 玩家变量1 改变时
广播 "刷新UI"注意:
- 可以监听任何属性变化
- 适合做自动响应逻辑
3.3 当定时器到期时
触发条件:定时器设置的时间到达
需要的组件:无
典型用途:
- 延迟执行
- 定时任务
- 循环检测
示例:
当 定时器到期时
显示 "时间到!" 在 提示UI上注意:
- 需要先启动定时器
- 定时器是一次性的还是循环的取决于配置
四、战斗类触发时机
4.1 当生命值改变时
触发条件:物体的生命值发生变化
需要的组件:生命组件
典型用途:
- 血量变化时更新UI
- 触发低血量警告
- 记录伤害
示例:
当 生命值改变时
设置血条UI宽度为 (当前生命 / 最大生命) * 100
如果 当前生命 < 最大生命 * 0.3 那么
播放 警告音效
结束4.2 当死亡时
触发条件:物体生命值降为0
需要的组件:生命组件
典型用途:
- 怪物死亡奖励
- 玩家死亡处理
- 死亡特效
示例:
当 死亡时
播放 死亡特效
生成 金币 到 当前物体位置
等待 1 秒
销毁 当前物体4.3 当发射子弹时
触发条件:物体发射子弹
需要的组件:子弹组件
典型用途:
- 特殊子弹效果
- 子弹音效
- 子弹数量统计
4.4 当子弹击中时
触发条件:子弹命中其他物体
需要的组件:子弹组件
典型用途:
- 命中特效
- 伤害处理
- 击杀记录
五、物理类触发时机
5.1 当受力时
触发条件:物体受到外力作用
需要的组件:物理组件
典型用途:
- 被推动检测
- 爆炸冲击波
- 被攻击击退
5.2 当停止时
触发条件:物体停止移动
需要的组件:物理组件
典型用途:
- 滑行停止检测
- 落地检测
六、UI类触发时机
6.1 当UI点击时
触发条件:UI元素被点击
需要的组件:无
典型用途:
- 按钮响应
- 选项选择
- 菜单操作
示例:
当 UI点击 "开始游戏按钮" 时
隐藏 开始菜单UI
显示 游戏UI6.2 当UI显示时
触发条件:UI被显示
需要的组件:无
典型用途:
- 显示时刷新内容
- 初始化UI状态
6.3 当UI隐藏时
触发条件:UI被隐藏
需要的组件:无
典型用途:
- 隐藏时清理数据
- 暂停相关逻辑
七、联机类触发时机
7.1 当玩家加入时
触发条件:玩家加入游戏
需要的组件:无
典型用途:
- 初始化玩家数据
- 显示欢迎信息
- 分配队伍
7.2 当玩家离开时
触发条件:玩家离开游戏
需要的组件:无
典型用途:
- 清理玩家数据
- 重新分配队伍
八、触发时机组合使用
8.1 典型组合:NPC对话
当 点击时
显示 对话框UI
设置对话框文字为 "欢迎来到我的商店"
当 UI点击 "继续按钮" 时
隐藏 对话框UI
广播 "关闭对话"8.2 典型组合:道具收集
当 开始时
设置玩家变量1 为 0
当 碰撞时
如果 碰撞对象 是 道具 那么
设置玩家变量1 为 玩家变量1 + 1
广播 "刷新道具UI"
销毁 当前物体
结束
当 广播 "刷新道具UI" 时
设置道具UI文字为 "道具:" + 玩家变量18.3 典型组合:战斗系统
当 生命值改变时
设置血条宽度为 (当前生命 / 最大生命) * 100
当 死亡时
播放 死亡特效
生成 掉落物 到 当前物体位置
等待 2 秒
销毁 当前物体九、常见问题
Q:为什么「当点击时」不触发?
A:检查:
- 物体是否有「可互动组件」
- 是否在试玩模式
- 是否正确点击(不是拖动)
Q:为什么「当碰撞时」不触发?
A:检查:
- 双方是否有物理组件
- 物理组件的碰撞检测是否开启
- 物体是否真的有接触
Q:多个触发时机可以同时存在吗?
A:可以。一个脚本可以有多个触发时机,每个触发时机下的积木块独立执行。
Q:触发时机可以嵌套吗?
A:不建议嵌套触发时机,可能导致逻辑混乱。尽量使用广播解耦。
相关页面
待验证问题
以下问题需要进一步验证:
| 问题 | 状态 | 验证方向 |
|---|---|---|
| 某些特殊触发时机的详细参数 | 🔄 待验证 | 需要官方文档确认 |
| 触发时机的执行顺序规则 | 🔄 待验证 | 需要实际测试 |
| 特定版本中触发时机的变化 | 🔄 待验证 | 需要多版本对比 |
📝 说明:触发时机核心用法已稳定,进阶内容属于研究范畴。
后续优化方向
- [ ] 补充每个触发时机的详细参数说明
- [ ] 增加更多实战组合示例
- [ ] 整理触发时机优先级规则
