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