mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-03-22 19:03:29 +08:00
- 移除 controller.md 文件,将控制器相关内容整合到其他文档中 - 重构 command.md 文档,更新命令基类的类型参数设计 - 添加新的命令基类 AbstractCommand<TInput> 和 AbstractCommand<TInput, TResult> - 更新命令使用示例,采用输入参数对象替代构造函数参数 - 优化事件注册相关代码示例,移除 Godot 特定的生命周期方法 - 更新依赖注入容器文档,明确 Register 方法的泛型特性 - 添加模型异步初始化功能说明和相关接口介绍 - 重构查询系统文档,统一采用输入参数对象的设计模式 - 更新架构生命周期枚举值,使用更准确的阶段名称 - 添加 GitHub Actions 工作流配置,集成 LLM 准备的文档索引功能
108 lines
2.3 KiB
Markdown
108 lines
2.3 KiB
Markdown
# 常见问题(FAQ)
|
||
|
||
## 安装与配置
|
||
|
||
### Q: 如何安装 GFramework?
|
||
|
||
A: 使用 NuGet 包管理器:
|
||
|
||
```bash
|
||
dotnet add package GeWuYou.GFramework.Core
|
||
```
|
||
|
||
详见 [安装配置](./getting-started/installation.md)。
|
||
|
||
### Q: 支持哪些 .NET 版本?
|
||
|
||
A: 支持 .NET 6.0 及更高版本(包括 .NET 7.0、8.0、9.0、10.0)。
|
||
|
||
### Q: 可以在 Unity 中使用吗?
|
||
|
||
A: Core 模块可以在 Unity 中使用。Godot 集成模块仅支持 Godot。
|
||
|
||
## 架构设计
|
||
|
||
### Q: 什么时候应该使用 Command?
|
||
|
||
A: 当需要封装用户操作、支持撤销/重做或记录操作历史时。
|
||
|
||
### Q: 什么时候应该使用 Query?
|
||
|
||
A: 当需要查询数据、检查条件或明确只读意图时。
|
||
|
||
### Q: 什么时候应该使用 Event?
|
||
|
||
A: 当需要通知其他组件、实现松耦合通信或支持多个监听者时。
|
||
|
||
### Q: Model 中可以包含业务逻辑吗?
|
||
|
||
A: 不建议。Model 应该只存储数据。业务逻辑应该在 System 中实现。
|
||
|
||
## 性能优化
|
||
|
||
### Q: 频繁调用 GetModel 会有性能问题吗?
|
||
|
||
A: 不会,但建议缓存引用以提高效率。
|
||
|
||
### Q: 事件系统的性能如何?
|
||
|
||
A: 事件系统使用类型安全的泛型,性能优异。
|
||
|
||
### Q: BindableProperty 有性能开销吗?
|
||
|
||
A: 开销极小。仅在值变化时触发回调。
|
||
|
||
## 内存管理
|
||
|
||
### Q: 如何避免内存泄漏?
|
||
|
||
A: 使用 `UnRegisterList` 统一管理注销。
|
||
|
||
### Q: 销毁 Architecture 时会自动清理吗?
|
||
|
||
A: 是的。调用 `architecture.Destroy()` 会自动销毁所有组件。
|
||
|
||
## Godot 集成
|
||
|
||
### Q: 如何在 Godot 中使用 GFramework?
|
||
|
||
A: 安装 Godot 集成包:
|
||
|
||
```bash
|
||
dotnet add package GeWuYou.GFramework.Godot
|
||
```
|
||
|
||
### Q: 支持哪个版本的 Godot?
|
||
|
||
A: Godot 4.6 及更高版本。
|
||
|
||
## 测试
|
||
|
||
### Q: 如何测试使用 GFramework 的代码?
|
||
|
||
A: 通过依赖注入模拟架构进行单元测试。
|
||
|
||
## 最佳实践
|
||
|
||
### Q: 如何组织大型项目?
|
||
|
||
A: 按功能模块组织(Models、Systems、Commands、Events 等)。
|
||
|
||
### Q: 如何处理异步操作?
|
||
|
||
A: 使用 async/await 结合事件系统。
|
||
|
||
### Q: 如何处理错误?
|
||
|
||
A: 使用事件传递错误信息。
|
||
|
||
## 许可证
|
||
|
||
### Q: GFramework 采用什么许可证?
|
||
|
||
A: Apache License 2.0。可用于商业项目。
|
||
|
||
---
|
||
|
||
**没有找到答案?** 在 [GitHub](https://github.com/GeWuYou/GFramework) 提交 Issue。
|