--- name: interaction-effect-architecture description: 交互系统 v1.0 Effect/Action 数据驱动架构决策记录 metadata: type: project --- ## 交互系统架构决策(v1.0 重构,2026-06-11) ### 核心架构:Effect/Action 数据驱动 交互物不关心"交互后发生什么",只配置 Effect(由 Action 组成)交给 EffectManager 执行。 **Why:** v0.1 用 switch(Type) 硬编码,新增交互类型需改代码。v1.0 配数据即可。 ### Manager 归属 - FInteractionManager / FEffectManager 是普通 C++ 类,不是 UObject - 由 ASystemDriver (AInfo) 持有,随 World 生灭 - 不依赖 UE Subsystem 生命周期,显式控制创建顺序和 Tick 顺序 - 所有 UObject 引用用 TWeakObjectPtr,回调用 TFunction - GameInstance 不持有任何交互系统对象,只有 UPersistenceSubsystem 跨 World ### 分层规则 - 表现层只读 Manager 缓存(getter),不碰 Component - Manager 在选择变化时从 Component 读一次并缓存 - 逻辑事件仅用于 "A 影响 B"(如 Consume → Persistence) ### 协调方式 - Character 输入回调通过 ASystemDriver::Get(World) 访问两个 Manager - Driver::BeginPlay 中 TFunction 连线 EffectManager.OnEffectComplete → Manager.OnInteractionFinished - PromptComponent 通过 Driver 获取 Manager,只读缓存