变量 (编辑器)

变量是 SMBX 38A 的一个重要组件,作用是用于控制用户定义的变量,以用于控制许多逻辑事件等等用途。
此组件需要配合 TeaScript API 去使用。
用法
打开菜单栏中的"View" - "Variables",可以看到诸如右边窗口内容。
点击"Add"可以添加一个用户定义的变量,点击“Delete”可删除当前选择的变量。
按住“Shift”键点击“Add”可以添加一个用户定义的数组,需要在 TeaScript 使用call redim(0, arrayName, Count)或call redim(2, arrayName, Count*2)来定义数组的下标数(字符串数组会定义2倍于给定数量的下标数。)
特性
在该窗口创建出来的变量,会创建一个以val()和str()形式的用户变量,在 TeaScript 可以使用不同的脚本去调用。
v(a) = 125
v(b) = v(a) + 125
v(c) += v(b)
str(a) = "Hello SMBX World!"
'注:字符串变量无法使用“Variables”窗口直接查看或编辑。
创建出来的用户变量,左侧会有一个G勾选框,代表当前游玩存档(编辑器游玩环境无效)对该变量进行保存行为,下次在进入该关卡可以读取之前保存的变量。

如果需要在不同的关卡里调用同一个变量,需要先去往世界编辑器里创建变量(需要保存在同一个关卡工作区),再次回到关卡编辑器会发现创建出来的变量变灰,这就代表这是一个“全局变量”,需要使用gvl()和gstr()去调用。
与关卡内的“G”变量的区别是,前者只能在一个关卡里使用,适合定义诸如进度,当前关卡货币等等特性;后者可以在不同关卡调用该变量,适合用于替代原版的计数系统等等。
如果用户需要定义一堆数保存在一个变量,需要创建数组,但是创建出来的数组不能直接使用,需要在脚本里使用call redim(0, arrayName, Count)或call redim(2, arrayName, Count*2)定义下标个数(字符串需要定义2倍数量)。之后使用array(arrayname(x))或strarray(arrayname(x))即可调用。

| 版本 | SMBX 1.3 | SMBX 38A | 月尘 | TheXTech 内置编辑器 |
|---|---|
| 通用 | |
| 功能 | 工具栏 |
| 工作区 | 关卡编辑器 | 世界编辑器 |
| 组件 | 图层 | 事件 |
| 编辑器属性区 | 关卡 | 世界 | 全局 |
| SMBX 38A | |
| 功能 | 工具栏 | 地形编辑器(资产窗口编辑器) | 自动衔接编辑器 | MarioShop |
| 工作区 | 关卡编辑器 | 世界编辑器 |
| 组件 | 图层 | 事件 | 变量 | 脚本 | 数据库 | 调试器 |
| 资产属性 | 方块 | 物体背景 | NPC | 场景地块 | 场景装饰物 | 路径 | 关卡 |
| 请注意,这里以下所有的条目均以 SMBX 1.4.5 Patch 31.1 为基底。 | |
|---|---|
| 基础 | 语法 | 函数 | 回调型函数 |
| 组件 | BGP (大背景) | 背景物件 | 位图 | 方块 | 角色 | 特效 | 流体 | 计时器 | NPC | 文本 | 传送点 | 系统变量 |
| 技术性 | 额外值 | BSet 函数 | Playnote 函数 | 特殊图层 | 未知函数 | 自动运行事件 | 编辑器函数 |