Files
CursorInitGeneral/.cursor/rules/project/godot-architecture.mdc

42 lines
1.9 KiB
Plaintext
Raw Permalink 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.
---
description: Godot 项目的分层、依赖方向、信号解耦与工程完整性约定
alwaysApply: true
---
# Godot 分层架构
先识别项目已有目录、autoload 和通信方式,再沿用其边界;不要仅为套用规则而创建新框架。
## 依赖方向
- 领域逻辑负责规则、状态与数据,尽量保持可在 headless 环境运行。
- 表现层负责场景、UI、输入、动画、音频和特效不在回调中复制领域规则。
- 逻辑层不得加载 UI 场景、抓取表现节点或等待表现动画完成。
- UI 将用户意图转为逻辑层公开命令;状态变化通过返回值、可观察状态或信号反馈。
- 跨系统优先用明确接口或信号解耦。若项目已有事件总线,复用其契约;没有时不要强制新建全局总线。
```gdscript
# 表现层只转发意图
func _on_confirm_pressed() -> void:
entity_service.confirm(entity_id)
# 逻辑层发布状态变化,不直接操作 UI
func confirm(id: StringName) -> void:
# 更新领域状态
entity_confirmed.emit(id)
```
## 边界约束
- 信号参数和公开方法是跨层契约;修改时同步调用方、测试与相关文档。
- 避免双向依赖和跨层节点路径。依赖应显式注入或通过稳定接口获取。
- autoload 只承载确需全局生命周期的服务或状态,不把普通功能默认做成单例。
- 新系统先明确所有权、生命周期、可测试边界和失败处理,再决定放置位置。
## 工程完整性
- Godot 版本遵循项目声明;升级引擎或兼容特征前必须说明影响并取得确认。
- 修改 `project.godot`、导出预设、autoload 或输入映射前,先说明运行与构建影响。
- Godot 生成的 UID 与对应资源保持一致,不手工伪造;移动或删除资源时检查引用。
- 外部插件和第三方资源遵守 `dependency-governance`。