Project AS Developer Doc Help

3.3 设施系统(FacilitySystem)

设施系统负责游戏中所有建筑设施的逻辑控制,包括设施的数据结构、建造与升级流程、状态管理、资源交互逻辑等。设施是游戏资源的主要产出来源,也是驱动居民活动与游戏循环的关键节点。

3.3.1 设施数据结构设计(ScriptableObject)

所有设施信息通过 ScriptableObject 进行数据驱动管理,结构如下:

[CreateAssetMenu(fileName = "FacilityConfig", menuName = "Configs/Facility")] public class FacilityConfig : ScriptableObject { public string facilityId; // 唯一ID,必须唯一(每级设施不同ID) public string displayName; public string description; public FacilityCategory category; public Sprite icon; public List<ResourceAmount> buildCost; public float buildTime; public List<ResourceAmount> dailyOutput; public List<ResourceAmount> dailyConsumption; public FacilityConfig upgradeTarget; // 升级后替换为的新设施配置(可空) public bool requiresOperator; } [System.Serializable] public class ResourceAmount { public ResourceType type; public int amount; } public enum FacilityCategory { Energy, Agriculture, Habitat, Research, Production, Decoration }

设施配置将集中存储于 Resources/Configs/Facility/ 目录,由 FacilityManager 在初始化阶段统一加载并缓存。

3.3.2 设施运行状态管理

每个运行中设施对应一个 FacilityInstance 对象,记录其运行状态、构建进度与是否在线:

public class FacilityInstance { public FacilityConfig config; public FacilityState state; public float buildProgress; public bool isOperating; public bool hasError; public List<Resident> assignedOperators; } public enum FacilityState { UnderConstruction, Operational, Paused, Damaged, Upgrading }

运行逻辑包括:

  • 设施建造:消耗建材资源并推进 buildProgress

  • 设施启动:自动判断资源与人力条件,设置 isOperating 状态

  • 设施升级:替换 FacilityConfig 并重置状态

  • 故障停机:设置 hasError 并中断产出流程

3.3.3 设施与资源交互模型

设施通过 ResourceManager 注册为资源生产者与消费者。

public interface IResourceProducer { void Produce(ResourceManager rm); } public interface IResourceConsumer { void Consume(ResourceManager rm); }

在 ResourceManager 每周期 Tick 时:

foreach (var facility in activeFacilities) { if (facility.CanOperate()) { facility.Consume(ResourceManager.Instance); facility.Produce(ResourceManager.Instance); } }

运作逻辑建议:

  • 先执行消耗 → 若返回 false,则跳过产出

  • 可依据效率参数(如居民技能、科技加成)调整产出比率

  • 若设施 requiresOperator == true 且无可用居民,则暂停运作

3.3.4 扩展功能建议

  • 设施运行效率系统 :支持计算公式,如 效率 = 基础值 × 人力效率 × 科技倍率 × 环境因子

  • 设施链式依赖 :如 A 产出 → B 消耗 → C 提升品质,实现多级加工逻辑

  • 动态设施行为扩展 :通过策略模式注入特定行为,如自动修复、自我升级、能源优化等

  • 设施UI绑定模型 :支持将运行状态、产能变化等信息实时映射至 UI 面板模块

15 七月 2025