Project AS Developer Doc Help

3.2 资源系统(ResourceManager)

资源系统是游戏中最基础也最关键的系统之一,贯穿设施运转、居民生存、科技研究、任务执行等所有核心逻辑。该系统负责维护资源的实时状态,处理资源的产出与消耗,并通过事件机制通知 UI 与其他系统。

3.2.1 资源分类、枚举与结构体设计

资源按功能逻辑划分为多个类别(生存类、能源类、材料类、抽象类等),以支持订阅粒度控制与可视化归类。

public enum ResourceCategory { Survival, // 水、食物等基本生存资源 Energy, // 能源类(电力、生物能) Material, // 金属、化学原料等工业资源 Abstract, // 数据、影响力等非实体资源 } public enum ResourceType { Water, Food, Energy, Biomass, Metal, Chemical, Data, Influence } [System.Serializable] public class ResourceEntry { public ResourceType type; public ResourceCategory category; public int current; public int max; }

ResourceManager 内部维护如下结构:

Dictionary<ResourceType, ResourceEntry> resourceMap; Dictionary<ResourceCategory, List<ResourceType>> categoryMap;

categoryMap 将在启动时建立索引关系,供 UI 或事件系统快速查找。

3.2.2 资源产出/消耗接口

每个子系统(如设施、居民、任务)应通过 ResourceManager 提供的统一接口操作资源,避免直接修改状态。

典型 API 接口设计:

public bool Consume(ResourceType type, int amount); public void Produce(ResourceType type, int amount); public int GetAmount(ResourceType type); public void SetMax(ResourceType type, int max);

资源更新频率建议以“秒级”或“分钟级”为单位进行更新,从而提供更细腻的模拟感。

更新调度建议(GameManager 驱动):

  • 每秒更新一次资源系统(或设置可配置的资源刷新周期)

  • 各设施/系统应注册其“每周期产出/消耗逻辑”

  • ResourceManager 统一调用:

public void TickUpdateResources() { foreach (var provider in activeProducers) { provider.Produce(ResourceManager.Instance); } foreach (var consumer in activeConsumers) { consumer.Consume(ResourceManager.Instance); } DispatchResourceChangedEvent(); }

3.2.3 资源变动事件分发机制

为保持系统与 UI 解耦,所有资源变更应通过事件系统进行广播。支持单项变更事件分类批量变更事件两种形式。

事件结构:

public class ResourceEvent { public ResourceType type; public int newAmount; public int delta; public ResourceCategory category; } public class ResourceCategoryEvent { public ResourceCategory category; public List<ResourceEvent> changes; }

事件使用示例:

EventBus.Publish(new ResourceEvent { type = ResourceType.Food, newAmount = 120, delta = +20, category = ResourceCategory.Survival });

订阅机制支持过滤:

EventBus.Subscribe<ResourceEvent>((e) => { if (e.category == ResourceCategory.Energy) { UpdateEnergyUI(e.type, e.newAmount); } });

3.2.4 扩展性建议

  • 资源权重系统 :可对资源设定战略等级(如:一级生存类、二级经济类、三级战略类)以影响 AI 或玩家决策排序。

  • 稀缺性/污染度参数 :扩展资源结构体以支持稀缺等级与环境负担。

  • 动态资源规则 :在不同科技或事件影响下,调整资源产能倍率或替代品策略。

14 七月 2025