脚本系统
场景解锁脚本
脚本系统 用脚本判断一个场景现在能不能进入 `场景解锁脚本` 只负责判断场景是否解锁。它最重要的要求只有一个:最后返回 `true` 或 `false`。 # 什么时候该用它 如果场景是否开放,不只是看一个简单条件,而是要综合很多内容,就很适合用脚本。 常见情况有: 要同时判断等级、章节和体力 要检查某个对象
脚本系统
用脚本判断一个场景现在能不能进入
`场景解锁脚本` 只负责判断场景是否解锁。它最重要的要求只有一个:最后返回 `true` 或 `false`。
# 什么时候该用它
如果场景是否开放,不只是看一个简单条件,而是要综合很多内容,就很适合用脚本。
常见情况有:
- 要同时判断等级、章节和体力
- 要检查某个对象是否存在
- 要看表格里的某个结果
- 要结合对象筛选器判断
# 最重要的规则
- 只能做读取和判断
- 必须返回
true或false - 写了场景解锁脚本后,下方普通需求属性仍会保留在下面
# 1. 最简单的写法
return player.getPro("等级") >= 5;
这表示等级到 5 级时,场景才解锁。
# 2. 多条件一起判断
const levelEnough = player.getPro("等级") >= 10;
const storyEnough = player.getPro("主线阶段") >= 3;
const staminaEnough = player.getPro("体力") > 0;
return levelEnough && storyEnough && staminaEnough;
如果你已经有多个条件,这种写法会很清楚。
# 3. 依赖对象系统
const keys = objects.getObjects("钥匙");
return keys.some((item) => item.getName() === "王城钥匙");
这很适合做:
- 拿到某个关键物品才开放场景
- 某类对象存在时才开放场景
# 4. 依赖对象筛选器
const qualified = objects.getObjectsByFilter("可进入王城的随从");
return Array.isArray(qualified) && qualified.length > 0;
如果你已经在编辑器里配好了 对象筛选器,这里就可以直接复用。
# 5. 依赖表格数据
const table = player.getTable("副本完成记录");
if (!table) return false;
return String(table.getData("遗迹", "是否通关")) === "是";
这很适合做:
- 打通前置副本后开放新场景
- 某项进度记录完成后开放新区域
# 6. 什么时候不用脚本
如果只是这种简单情况:
- 等级大于某个值
- 金币达到某个值
- 两三个普通条件组合
很多时候直接用场景里的 解锁需求属性 就够了。
脚本更适合留给比较复杂的判断。
# 7. 这类内容通常不写在这里
场景解锁脚本更常见的是只做判断,下面这些动作一般会放在别的位置:
- 发奖励
- 改属性
- 跳场景
- 弹窗
- 播放特效
例如:
player.addPro("金币", 100);
return true;
因为场景解锁状态本身可能会被反复读取,这里通常只负责判断。
# 8. 常见错误
# 返回了字符串
return "已解锁";
# 返回了数字
return 1;
# 忘了返回
player.getPro("等级") >= 5;
更常见的写法是直接返回布尔值:
return player.getPro("等级") >= 5;
# 9. 一个常见模板
const levelEnough = player.getPro("等级") >= 15;
const storyEnough = player.getPro("主线阶段") >= 5;
const passTokenList = objects.getObjects("通行证");
const hasToken = passTokenList.some((item) => item.getName() === "北境通行证");
return levelEnough && storyEnough && hasToken;
这种写法好读,也方便以后继续加条件。
# 使用时要注意的几件事
- 必须返回
true / false。 - 更适合做复杂判断。
- 这里通常只负责判断。
- 简单条件时,也可以直接用场景自带的需求属性。