过去几天我把游戏的交互系统彻底重做了,从原来的教科书式状态模式转向了事件驱动、以行为为中心的架构。旧系统靠一堆状态类管理输入和转换,它确实”能用”,但和Unity的开发哲学背道而驰,增加了不必要的间接层,每次改动都像在泥潭里跋涉。
状态对象和转场撤掉后,直接用事件+清晰的行为归属,复杂度肉眼可见地下来了
新架构一句话总结:输入靠事件驱动,检测靠触发器,“做什么”放在纯C#行为类中,数据通过只读交互上下文流动。就这么简单。
策划同学在 Inspector 里直接绑定反馈和行为,加音效、描边、准星变化都不必再敲代码
即便在 Unity 里,保持 InteractionContext 只读也能让行为逻辑好推理。行为只拿到一坨引用(player controller、camera、input facade、anchor 等),执行时只读访问,写单元测试的时候也不会牵扯整场景。
交互 Manager 会发出一系列“状态变化事件”,一个很小的 UI 控制器订阅这些事件,用来:
因为 UI 只是事件监听者,所以你可以放心疯狂迭代 UI 效果,而不用担心动到交互核心逻辑。 这种“UI 和交互逻辑硬分开”的感觉,真的是重构之后最爽的收获之一。
准星变化完全来自状态事件,交互代码里没有 UI 黑盒。
评论区
共 条评论热门最新