变量

变量与作用域

变量是世界的记忆——每个变量存一个整数(从 0 开始)。作者用条件与效果读写变量,把物件一个个串起来:变量、条件、效果就是机制的黏合剂。

  • 世界变量——整个世界一份,跨场景保留;
  • 场景变量——按场景记忆:离开场景时记住,回来时恢复;
  • 物件变量——放进场景的物件自己的一份,跨场景保留;
  • 背包——按物品种类自动计数:拾到几个就是几。

物件变量也在物件库定义:同一个库物件放多个实例,每个实例各有一份自己的值;在场景实例面板里可以覆盖初值,但不能增删变量——要加变量,回物件库。

用户变量(世界设置「用户变量」Tab)是每个用户各有一份的整数变量。试运行和单人世界里,它与普通世界变量一样;多人世界里每人各有一份——读自己的、改自己的,只随你自己的存档保存,不会影响其他用户。比如憋七世界里,每人一个「座位号」;内置的「皮肤」也属于这类变量。

初值在哪里设置:世界变量在「世界设置 · 世界变量」;场景变量在场景检查器;物件变量在物件库(放进场景后可在实例面板覆盖);用户变量在「世界设置 · 用户变量」。运行过程中一律用条件与效果读写,函数里也能直接引用。

💡
内置变量在编辑器里显示为中文名、公式里写短名——不用记,输入 [ 时自动弹出补全列表。
变量 → 条件 → 效果的循环
① 变量记住状态(如药草数量为 3);② 条件做判断(数量够不够);③ 效果改状态(治好病、扣掉药草);④ 回到变量——机制就是这样互相咬合起来的。

内置变量总览

内置变量总是存在:不用创建,也不能删除。编辑器里显示中文名,公式里写短名(下表的「公式名」)。

显示名公式名作用域读写
黑暗度_darkness场景读 / 写
重力_gravity场景读 / 写
可见_visible物件(全部)读 / 写
光源强度_intensity物件(光源)读 / 写
光照半径_radius物件(光源)读 / 写
点亮_lit物件(光源)读 / 写
门的开启_open物件(门)读 / 写
计时器剩余_remaining场景计时器读 / 写
计时器运行_running场景计时器读 / 写
皮肤_skin用户读 / 写
在线人数_players世界只读
称号等级_title用户只读

「在线人数」与「称号等级」是只读的:条件能判断它们,但写它们不会有任何效果。其余内置变量都可以用效果或函数改写。

黑暗度

「黑暗度」表示场景有多暗,范围 0~100:0 是明亮,100 是一片漆黑。在场景设置里给初值;运行中可以用效果或函数改写,画面立即变化。

黑暗用一层暗罩盖住整个场景;光源会在暗罩上挖出亮洞——光的强度与半径决定洞有多亮、多大。完全黑暗的场景里,没有光源就什么也看不见。

写法:[森林._darkness]——第一段是场景名或场景编号,后面跟变量名。

💡
常见用法:走进地窖时把黑暗度调高,点亮火把后调回 0。

重力

「重力」只对侧视场景有效,表示下落的加速度:数值越大,下落越快、跳得越沉。默认 2000(常规重力);在场景设置里给初值,运行中可以用效果或函数改写。

两个特殊值:设为 0 = 悬浮——不会下落、也没有跳跃,可以上下左右自由移动;设为负数 = 往上掉——天花板就是地面,整个世界倒过来。俯视场景不使用重力。

写法:[森林._gravity]。

💡
常见用法:水下关卡把重力调小、太空关卡设为 0、颠倒迷宫设为负数。

可见

每个放进场景的物件都有一个「可见」变量:1 = 显示,0 = 隐藏。默认 1;可以给初值,也能用条件判断、用效果或函数改写。

隐藏的物件是完全消失:不显示、不阻挡、不能交互、触发器不触发、光源也不再发光;改回 1 立刻恢复。编辑画布上,初始隐藏的物件会半透明显示,方便继续编辑;试运行时才真正消失。计时器没有这个变量。

写法:[森林.宝箱._visible]——第一段是场景,第二段是物件。

💡
常见用法:宝箱打开后隐藏、机关触发后露出新道路、开关控制平台出现。

光源:强度、半径、点亮

每个光源有三个内置变量:强度(0~100)、光照半径(像素)、点亮(0 或 1)。

在物件库里定义光源的默认强度与半径;放进场景后,每个实例都可以单独覆盖初值。点亮默认 1(常亮)。

只有当点亮为 1、强度大于 0、半径大于 0 时,光源才会照亮黑暗。点亮状态改变时,如果这盏灯配了触发音频,会播放音效。

写法:[森林.篝火._lit] / [森林.篝火._intensity] / [森林.篝火._radius]。

💡
常见用法:开关灯——效果把「点亮」设为 0/1;把半径设为 0 也能让灯熄灭。

门的开启

每扇门有一个「开启」变量(_open):0 = 关,1 = 开。用户每通过一次这扇门,它会自动变成 1,并且跨场景保留——可以拿它做条件,比如「这扇门开过才允许某件事」。

也可以在效果里改写它(设回 0 = 重新记为未开启),门的外观会跟随:物件库里可以为门指定「开」状态的贴图。

注意:这个变量只是一个状态记录,不会自动拦住用户。要「没有钥匙不开门」,把条件(比如钥匙数量 ≥ 1、不满足时的提示语)写在这扇门上。

💡
写法:[森林.大门._open];在这扇门自己的效果里也可以直接用 [.._open](见「函数」章的「自绑定」)。

计时器:剩余与运行

每个场景计时器有两个内置变量:「剩余」(_remaining,秒)和「运行」(_running,0/1)。

在场景检查器的计时器里给「剩余」初值:正数 = 进入场景自动开始倒计时;0 = 不自动开始。

倒计时归零的那一刻会做一次判断:条件满足就执行效果,然后停下;不满足也停下,不会重试。想让它周期运行:在效果里把「剩余」再设回正数——每归零一次就再来一轮。

倒计时过程中把「剩余」设为 0 = 取消(不会触发);设为别的正数 = 重新计时。所有计时器共用一个时钟,每秒走一步。

「运行」表示当前是否在倒计时中(0/1),一般用来做条件判断。把它的初值设为 1、同时「剩余」为 0,会在进入场景后立刻触发一次。

💡
写法:用输入 [ 的补全插入即可(如 [森林.篝火计时._remaining]),不用记计时器编号。

皮肤

「皮肤」记录当前角色使用的皮肤编号(皮肤物料的编号)。0 = 默认皮肤;在效果或函数里写成某个皮肤的编号,会立即换装。

编号在物料视图的皮肤卡片上(#后面的数字)。初始值是世界设置里选的默认皮肤;设回 0 就回到默认皮肤。

只有真正的皮肤编号才有效:写成图片等其他物料的编号、或者不存在的编号,会被忽略——皮肤保持原样。

多人世界里每人各有一份:你只改自己的皮肤;别人看到的是你的新皮肤,他们自己的皮肤不受影响。

💡
常见用法:完成任务自动换装、走进洞穴变身——纯靠变量 + 效果组合。

在线人数

「在线人数」表示此刻在这个副本里的用户数量(包括游客)。试运行和单人世界里恒为 1;多人世界里随进出实时变化。

只读:写它不会有任何效果。适合做「人数够了才能开始」的条件,或在界面上实时显示。

写法:[._players]。

💡
常见用法:开始按钮的条件写「在线人数 ≥ 2」,人齐了才能开局。

称号等级

「称号等级」表示你在这个世界的称号:0 = 还没有称号,1 = 最低一档,2、3……依次往上——按作者设置的称号与投币门槛决定。

只读:写它不会有任何效果。每次进入世界时按你在这个世界的累计投币重新匹配(作者调整门槛后,下次进入生效)。

写法:[._title]。

💡
常见用法:给不同称号的用户不同的入场欢迎语、专属区域或外观。