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