用途:为 Godot 项目提供一套收集循环(collection loop)系统,覆盖可收集物 ID、寻物任务、完成档案、最近物品罗盘 UI、隐藏生成器与持久化“找齐全部”进度。
主要能力:collectible_item.gd 作为拾取物,导出唯一 item_id 与所属 collection_id,使用一次性 Area 拾取;collection_manager.gd 作为权威进度核心,通过 start_collection(id, item_ids) 与 register_item(id, item_id) 维护已收集 ID 集合,并提供 get_remaining_ids();collection_compass.gd 依据剩余 ID 指向最近目标;hidden_item_spawner.gd 支持设计器标记与概率生成;collection_loop_patterns.gd 提供高级循环/MainLoop 辅助。
使用方式:按“黄金路径”先接入 collectible_item.gd 与 collection_manager.gd,需要引导时接入 collection_compass.gd;持久化通过 godot-save-load-systems 保存已收集 ID 集合(PackedStringArray,get_collected_ids()/restore_collected_ids()),而非 NodePath。重载时管理器恢复集合,已拥有的物品自行禁用。档案 UI 以管理器信号为准,未收集显示剪影,收集后揭示。
适用场景:固定摆放的寻物任务、随机生成寻物、收集档案与进度 HUD、跨会话持久化收集进度。
限制与注意:不要复用或省略稳定 ID;避免同一 Area 重叠重复计数;不要用 NodePath 作为身份;不要让最后一件物品因“剩余>1”逻辑而无法找到;进度不要只存在场景本地节点;先提交 ID 再播放特效再释放;不要非均匀缩放碰撞形状;不要硬编码生成位置;UI 不得自行发明收集状态;大关卡完成时用线程化 ResourceLoader,且不要从工作线程操作 SceneTree,只能 call_deferred。简单固定 ID 寻物无需加载 hidden_item_spawner.gd 与 collection_loop_patterns.gd。