@ao_serialize
为场景、检查器和 JSON 序列化选择字段。
最后更新于
Chest :: class : Component {
capacity: int @ao_serialize;
loot_table: string @ao_serialize;
is_locked: bool @ao_serialize;
// 运行时状态 — 无需序列化
has_been_opened: bool;
}Player_Progress :: class {
version: s64 = 1 @ao_serialize;
xp: s64 @ao_serialize;
level: s64 = 1 @ao_serialize;
unlocked_skins: [..]string @ao_serialize;
}
// 保存
Save.set_json(player, "progress", ref progress);
// 加载
progress := new(Player_Progress);
if !Save.try_get_json(player, "progress", ref progress) {
// 新玩家 — 类的默认值已经初始化。
}config: My_Config;
config.difficulty = 3;
json_str := JSON.serialize(ref config);
// json_str 仅包含 @ao_serialize 字段
loaded: My_Config;
JSON.try_deserialize(json_str, ref loaded);Player_Progress :: class {
version: s64 = 2 @ao_serialize;
max_health: int = 100 @ao_serialize;
unlocked_skins: [..]string @ao_serialize;
}AI_Mode :: enum {
IDLE;
PATROL;
CHASE;
}
Guard :: class : Component {
mode: AI_Mode @ao_serialize;
patrol_speed: float @ao_serialize;
}Spawn_Point :: struct {
position: v2 @ao_serialize;
radius: float @ao_serialize;
}
Spawner :: class : Component {
points: [..]Spawn_Point @ao_serialize;
spawn_interval: float @ao_serialize;
}