LPAI 独立网页游戏 AI 社区指南

状态与数据

类与对象

为角色、装备、任务和卡牌定义结构,并管理多份独立实例。

状态与数据 · 对象

同一种结构会出现多份时,使用对象

类定义共同字段和默认值,对象是进入玩家存档的具体实例。队员、装备、卡牌、任务和建筑都适合这种模型。

# 属性、表格和对象怎样选择

需求 使用
玩家只有一个金币值 属性
固定的装备配置目录 静态表格
玩家拥有多件各自有耐久和品质的装备 对象类 + 对象实例
只需要记录装备 ID 列表且没有独立状态 动态表格或字符串数据

不要为“队员 1、队员 2、队员 3”复制三套玩家属性。类字段一次定义,实例保存各自的值。

# 设计对象类

给 AI 或传统面板明确:

内容 装备示例
类 ID 与用途 equipment,玩家背包中的装备实例
默认名称与描述 未鉴定装备、未知属性
默认属性 攻击、品质、耐久、已装备
可编辑字符串 自定义词条、来源说明
唯一身份 每个实例由运行时对象 ID 区分
创建入口 掉落结算或商店购买脚本
删除入口 分解、消耗或明确的销毁规则

对象名称不是唯一身份。重命名后 ID 不变;脚本需要稳定定位时使用 getID()

# 通过脚本管理实例

const equipment = objects.newObject("装备", "铁剑", "一把普通铁剑");
if (!equipment) return;

equipment.setPro("攻击", 6);
equipment.setPro("品质", 1);
equipment.setPro("耐久", 100);

查询和删除:

const all = objects.getObjects("装备");
const broken = all.filter((item) => item.getPro("耐久") <= 0);

for (const item of broken) {
  objects.delObjectByID("装备", item.getID());
}

按数组序号删除容易受排序变化影响;有真实对象 ID 时优先 delObjectByID

# 对象事务要保持原子性

创建、扣费和发放通常属于一次操作:

  1. 检查玩家资源和对象数量限制。
  2. 先确定能否创建目标实例。
  3. 创建并初始化全部必要字段。
  4. 成功后再扣除资源或记录结果。
  5. 任一步失败都不能留下半初始化对象或部分扣费。

快速连点和异步返回都可能重复创建,控件脚本需要提交锁或明确的幂等键。

# 传统模式字段

传统类面板还可以维护默认属性、对象可编辑动态字符串、拥有事件、销毁条件和销毁事件。自动销毁适合简单稳定规则;复杂奖励或跨系统清理更适合显式脚本,因为能清楚控制顺序和失败行为。

# 验收对象模型

  • 创建两份同类对象后,它们的 ID 和实例状态独立。
  • 改变一件装备不会修改其他实例或类默认值。
  • 保存和刷新后对象数量、属性和字符串正确恢复。
  • 删除使用真实 ID,不受当前排序影响。
  • 页面空列表、单项、大列表都能显示。
  • 旧存档缺少新字段时能补默认值或明确迁移。

继续阅读:对象控件与当前实例objects 对象