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

创游世界脚本入门完全指南

一句话推荐:脚本是创游世界实现交互功能的核心工具。本文讲解脚本编写逻辑:触发时机决定"什么时候跑"、积木块决定"做什么操作"、变量决定"存什么数据"、自定义组件决定"封装什么能力"。

一句话摘要

脚本是创游世界实现交互功能的核心工具。本文档讲解脚本的编写逻辑:触发时机决定"什么时候跑"、积木块决定"做什么操作"、变量决定"存什么数据"、自定义组件决定"封装什么能力"。

适合谁阅读

  • 完全不会写脚本的新手用户
  • 只会摆素材、不理解如何给物体赋予行为的学习者
  • 想系统理解创游脚本编写逻辑的制作者

你将学到什么

  • 脚本编辑器的界面结构和基本操作
  • 触发时机是什么,以及常见触发时机有哪些
  • 变量的类型与使用场景
  • 常用积木块的功能分类
  • 自定义组件的基本编写方法
  • 脚本编写的常见错误与避坑建议

核心结论

  1. 脚本不是独立代码,而是"在特定时机下、执行特定逻辑"的描述
  2. 触发时机决定脚本何时执行,积木块决定具体操作
  3. 变量决定数据存储位置,要根据需要选择正确的作用域
  4. 自定义组件是封装可复用功能模块的最佳方式

1. 脚本编辑器的界面结构

从截图观察,脚本编辑器通常包含以下区域:

区域作用
对象选择区选择要编辑脚本的对象
触发时机区选择脚本在什么时机执行
积木块区拖拽积木块组合成逻辑
积木块选择区查找和选择积木块
操作区保存、试玩等操作

关键理解:脚本编辑器不是写代码,而是通过拖拽积木块来"拼装"逻辑。


2. 触发时机:脚本什么时候执行

2.1 什么是触发时机

触发时机决定了脚本在"什么情况下"被执行。没有触发时机,脚本永远不会执行。

2.2 常见触发时机分类

事件型触发时机

触发时机触发条件
当被创建时对象被创建时执行一次
当被销毁时对象被销毁时执行一次
当受到伤害时对象受到伤害时执行
当死亡时对象死亡时执行
当碰撞时对象与其他物体碰撞时执行
当接近时玩家接近对象时执行

交互型触发时机

触发时机触发条件
当被点击时对象被点击时执行
当互动按钮被按下时玩家按下互动按钮时执行
当使用道具时玩家使用道具时执行

广播型触发时机

触发时机触发条件
当收到广播时收到指定广播时执行
当执行指令时自定义组件指令被调用时执行

定时型触发时机

触发时机触发条件
当开始时游戏/地图开始时执行一次
每秒执行每秒循环执行
重复执行直到重复执行直到满足条件

2.3 选择触发时机的原则

  • 如果脚本只需要在特定事件发生时执行一次,选择事件型
  • 如果脚本需要持续检测状态,选择循环型
  • 如果需要多个对象响应同一事件,选择广播型

3. 变量:脚本中的数据存储

3.1 变量的本质

变量是"存储数据的容器"。在脚本中,变量用于:

  • 存储临时计算结果
  • 记录对象状态
  • 在不同脚本之间传递数据

3.2 变量的类型

根据存储位置,变量可分为:

类型生命周期存储位置用途
局部变量当前脚本执行完就消失脚本内部临时计算、中间值
自身属性对象存在期间组件/对象属性对象自身状态
地图属性地图存在期间地图对象同地图多对象共享
系统属性整个游戏期间系统层全局数据

3.3 变量的使用场景

场景1:计算两个数的和
→ 使用局部变量存储临时结果

场景2:记录敌人当前血量
→ 使用自身属性存储

场景3:记录当前波次(多波次战斗)
→ 使用地图属性存储

场景4:记录玩家拥有的金币
→ 使用系统属性或玩家变量存储

3.4 变量命名建议

  • 使用有意义的名称:金币 而不是 a
  • 使用中文或英文:当前血量currentHP
  • 保持一致:同类型变量使用统一的命名风格

4. 积木块分类与常用积木

4.1 积木块分类

从脚本界面截图,积木块可分为以下几类:

控制类积木

积木块功能
如果...那么条件判断
如果...那么...否则条件分支
当满足条件时重复执行循环执行
等待暂停等待
停止脚本停止当前脚本执行

运算类积木

积木块功能
加、减、乘、除基础数学运算
比较大小数值比较
随机数生成随机数
取整、四舍五入数学函数

数据类积木

积木块功能
新建变量创建局部变量
设置变量修改变量值
获取变量读取变量值

对象类积木

积木块功能
获取对象获取对象引用
获取属性读取对象属性
设置属性修改对象属性
销毁对象销毁对象

动作类积木

积木块功能
发送广播发送广播消息
播放动画播放对象动画
移动到移动对象位置
渐变属性平滑过渡

4.2 常用积木组合示例

示例1:受伤时扣血

当受到伤害时:
  获取自身生命值 → 当前生命
  获取伤害来源伤害值 → 伤害
  当前生命 - 伤害 → 新生命
  设置自身生命为 新生命
  如果 新生命 <= 0:
    发送广播"敌人死亡",参数:自身
    销毁自身

示例2:玩家靠近时显示提示

当接近时:
  如果 距离 <= 3:
    显示提示文字"按互动按钮进行交互"

5. 自定义组件入门

5.1 什么是自定义组件

自定义组件是创作者自己定义的功能模块,可以包含:

  • 属性:存储数据
  • 指令:定义可调用的行为
  • 触发时机:响应特定事件

5.2 创建自定义组件的步骤

  1. 选择要添加组件的对象
  2. 添加自定义组件
  3. 设置组件名称
  4. 添加属性(可选)
  5. 添加指令(可选)
  6. 编写指令脚本
  7. 保存并试玩

5.3 自定义组件示例

示例:简单的可拾取道具组件

组件名称:可拾取道具

属性:
  - 道具ID(数字)
  - 道具数量(数字)

指令:拾取
  当执行"拾取"时:
    发送广播"获得道具",参数:道具ID、道具数量
    销毁自身

触发时机:接近时
  当接近时:
    显示提示"按E拾取"

5.4 自定义组件的价值

价值说明
复用同一个组件可以挂载到多个对象上
封装把相关功能封装在一起
简化其他脚本只需调用指令,不需要知道内部实现
维护修改组件逻辑时,只需改一处

6. 脚本编写常见错误

错误1:忘记触发时机

❌ 错误写法:
  新建变量 金币 = 100
  金币 + 10 → 金币

✓ 正确写法:
  当被创建时:
    新建变量 金币 = 100
    金币 + 10 → 金币

错误2:变量作用域选错

❌ 错误做法:
  在每个敌人身上都用局部变量记录"是否在战斗"
  → 切换地图后状态丢失

✓ 正确做法:
  战斗状态用地图属性存储
  → 同一地图内所有对象都能访问

错误3:无限循环没有等待

❌ 错误写法:
  重复执行:
    如果 条件 = true:
      发送广播"触发"
  → 游戏会卡死

✓ 正确写法:
  重复执行:
    等待 0.5 秒
    如果 条件 = true:
      发送广播"触发"
      停止当前脚本

错误4:广播名称不一致

❌ 错误写法:
  发送广播"道具获得"
  监听广播"道具_获得"  ← 名称不一致

✓ 正确写法:
  发送广播"道具_获得"
  监听广播"道具_获得"  ← 名称一致

7. 脚本调试基础

7.1 常用调试方法

方法说明
打印日志使用显示文字或广播输出变量值
单步执行使用逐行 Debug 查看执行流程
分段注释把脚本分成多段,逐段测试

7.2 常见问题排查

问题可能原因解决方案
脚本不执行没有正确触发时机检查触发时机设置
变量值为空变量未初始化检查变量初始化
广播没有响应名称不一致检查广播名称
游戏卡死无限循环添加等待语句

8. 后续学习建议

当你掌握了基础脚本后,建议继续学习:

  1. 广播机制广播机制深度解析
  2. 变量作用域脚本作用域与数据流深度研究
  3. 自定义组件自定义组件深度解析
  4. UI 数据同步创游世界 UI 数据同步架构

相关页面


待验证问题

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

问题状态验证方向
积木块的完整分类和详细参数说明🔄 待验证需要官方文档确认
不同触发时机的优先级规则🔄 待验证需要实际测试

📝 说明:脚本入门核心概念已稳定,详细参数属于进阶内容。

后续优化方向

  • [ ] 补充更多积木块的详细参数说明
  • [ ] 添加完整的项目实战案例
  • [ ] 补充调试工具的使用教程
  • [ ] 完善常见错误与解决方案

参与维护

发现文档问题?

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

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