GFramework/ai-plan/public/input-system-godot-integration/traces/input-system-godot-integration-trace.md
gewuyou ebbef321ad feat(input): 新增统一输入抽象与Godot集成
- 新增输入绑定 DTO、设备上下文和 UI 语义桥接契约。

- 实现 Game 默认输入绑定存储、动作映射和 UI 分发桥接。

- 落地 Godot InputMap 适配、测试覆盖与配套文档。

- 更新 ai-plan 恢复点、worktree 映射与采用入口。
2026-05-10 22:29:26 +08:00

51 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Input System Godot Integration 追踪
## 2026-05-10
### 阶段:统一输入抽象与 Godot 适配首轮落地RP-001
- 创建长分支 `feat/input-system-godot-integration`,并在 `GFramework-WorkTree/GFramework-input-system-godot-integration`
建立独立 worktree
-`GFramework.Game.Abstractions/Input/` 新增:
- `InputBindingDescriptor`
- `InputActionBinding`
- `InputBindingSnapshot`
- `InputDeviceContext`
- `IInputBindingStore`
- `IInputDeviceTracker`
- `IUiInputActionMap`
- `IUiInputDispatcher`
-`GFramework.Game/Input/` 新增:
- `InputBindingStore`
- `InputDeviceTracker`
- `UiInputActionMap`
- `UiInputDispatcher`
-`GFramework.Godot/Input/` 新增:
- `GodotInputBindingCodec`
- `IGodotInputMapBackend`
- `GodotInputMapBackend`
- `GodotInputBindingStore`
- 关键设计决策:
- 保留字符串动作名,直接复用 `InputActions.*` 常量
- 抽象层只暴露 descriptor / snapshot不暴露 Godot `InputEvent`
- Godot backend 改成 descriptor-based contract避免测试直接依赖原生 `InputEvent` 实例
- `SetPrimaryBinding(...)` 改为按完整快照回写后端,以保留冲突交换语义
- 新增测试:
- `GFramework.Game.Tests/Input/InputBindingStoreTests.cs`
- `GFramework.Game.Tests/Input/UiInputDispatcherTests.cs`
- `GFramework.Godot.Tests/Input/GodotInputBindingStoreTests.cs`
- 文档更新:
- 新增 `docs/zh-CN/game/input.md`
- 新增 `docs/zh-CN/godot/input.md`
- 更新 `docs/zh-CN/game/index.md`
- 更新 `docs/zh-CN/godot/index.md`
- 更新 `docs/zh-CN/tutorials/godot-integration.md`
- 更新 `GFramework.Game.Abstractions/README.md`
- 更新 `GFramework.Game/README.md`
- 更新 `GFramework.Godot/README.md`
### 下一步
1. 若继续推进输入系统,优先定义更多逻辑动作与 gameplay 输入桥接,而不是先扩到宿主品牌文案
2. 若要增强 Godot 验证,单独准备真实 `InputMap` / `InputEvent` 集成宿主,而不是依赖普通 VSTest process