变量入门:记住分数血量和玩家名字
游戏需要记住东西:分数、血量、当前关卡、玩家起的名字。这些都是变量。官方文档把变量定义为「存储临时数据的容器」——要长期保存的进度走存储系统(存档),变量管运行中的数据。
四种数据类型
| 类型 | 存什么 | 例子 |
|---|---|---|
| 数字 | 数值,可加减乘除 | 分数 120、血量 3 |
| 文本 | 字符串 | 玩家名「小明」、当前关卡名 |
| 布尔 | 真 / 假 | 是否拿到钥匙、游戏是否暂停 |
| 结构 / 数组 | 集合类型,装多个变量 | 背包(数组)、配置表(结构) |
结构用「名字.子名」访问(Player.Equipment.Weapon),数组用下标(Inventory[3])。官方文档称它们为「组织数据与动态访问」的方式,背包、关卡配置这类复杂数据都靠它们。
四种作用域
- 全局变量:整个项目通用,跨场景存活——金币总数、解锁进度;
- 场景变量:只在当前场景存活——本关计时、本关已激活的开关;
- 事件局部变量:只在一条事件(含子事件)内存活——循环里的临时计数;
- 对象变量:挂在对象类型或单个实例上——每个敌人的血量、每个宝箱的内容。
同名冲突时官方文档给出的优先级:场景内「对象 > 场景变量 > 全局变量」——写事件时引用 Score,若某个对象也叫 Score,引擎会用对象的。所以命名别撞车。

完整示例:金币计数
- 项目属性里新建全局变量 Score,类型数字,初始 0;
- 金币事件里把 Score 加 1(见 事件表入门);
- HUD 文本每帧刷新:
"分数: " + VariableString(Score); - 存档需求:切换场景后想保留,用全局变量;想让玩家下次打开游戏还在,把 Score 写入存储。
在事件里读写
- 读:条件「变量 Score 大于等于 10」,或表达式里直接写
Score; - 写:动作「改变变量 Score」加 1 / 减 1 / 设为某值;
- 对象变量写成
Player.Points,事件里引用时带对象名前缀。
调试变量
数值不对时开调试器实时看每个变量的当前值(见 调试器),比猜快得多。
- 上一页:为什么动作影响了不该影响的对象
- 下一页:子事件重复与循环:批量处理对象