wiki更新
This commit is contained in:
@@ -14,6 +14,7 @@
|
||||
- [storage.md](file://doc/core/common/storage.md)
|
||||
- [RogueConfig.ts](file://assets/script/game/map/RogueConfig.ts) - *新增怪物类型配置与属性倍率*
|
||||
- [MissionMonComp.ts](file://assets/script/game/hero/Mon.ts) - *更新怪物生成逻辑*
|
||||
- [EBusComp.ts](file://assets/script/game/hero/EBusComp.ts) - *新增事件总线组件,基于ECS框架重构*
|
||||
</cite>
|
||||
|
||||
## 更新摘要
|
||||
@@ -21,6 +22,7 @@
|
||||
- 新增怪物类型系统,支持普通/精英/Boss三种类型
|
||||
- 添加怪物属性倍率配置,不同类型的怪物具有差异化属性
|
||||
- 更新关卡生成逻辑,支持程序化生成不同类型的怪物组合
|
||||
- 新增基于ECS框架的事件总线组件(EBusComp),重构角色视图数据逻辑
|
||||
- 增强资源引用追踪,添加新修改文件的来源标注
|
||||
|
||||
## 目录
|
||||
@@ -38,7 +40,7 @@
|
||||
|
||||
## 简介
|
||||
|
||||
本游戏采用基于Oops Framework的模块化架构,核心运行系统包含初始化流程、事件系统、资源加载与本地存储四大核心模块。系统通过异步队列管理初始化顺序,使用事件总线实现模块间解耦,采用分层资源管理模式,并提供安全可靠的本地存储机制。新增的怪物生成系统支持多种怪物类型和差异化属性配置。
|
||||
本游戏采用基于Oops Framework的模块化架构,核心运行系统包含初始化流程、事件系统、资源加载与本地存储四大核心模块。系统通过异步队列管理初始化顺序,使用事件总线实现模块间解耦,采用分层资源管理模式,并提供安全可靠的本地存储机制。新增的怪物生成系统支持多种怪物类型和差异化属性配置。基于ECS框架重构了角色视图的数据逻辑,引入了EBusComp事件总线组件,提升了系统的可维护性和扩展性。
|
||||
|
||||
## 项目架构概览
|
||||
|
||||
@@ -67,6 +69,10 @@ Map[GameMap]
|
||||
Monster[怪物生成系统]
|
||||
Scene[场景管理]
|
||||
end
|
||||
subgraph "ECS框架"
|
||||
EBus[EBusComp]
|
||||
Hero[Hero组件系统]
|
||||
end
|
||||
Main --> Init
|
||||
Init --> Loading
|
||||
Init --> SMC
|
||||
@@ -76,12 +82,14 @@ SMC --> Storage
|
||||
Init --> ResMgr
|
||||
ResMgr --> Loader
|
||||
Map --> Monster
|
||||
Hero --> EBus
|
||||
```
|
||||
|
||||
**图表来源**
|
||||
- [Main.ts](file://assets/script/Main.ts#L1-L41)
|
||||
- [Initialize.ts](file://assets/script/game/initialize/Initialize.ts#L1-L207)
|
||||
- [LoadingViewComp.ts](file://assets/script/game/initialize/view/LoadingViewComp.ts#L1-L91)
|
||||
- [EBusComp.ts](file://assets/script/game/hero/EBusComp.ts#L6-L89)
|
||||
|
||||
## 初始化系统
|
||||
|
||||
@@ -199,14 +207,75 @@ G --> H[移除监听器]
|
||||
- [GameEvent.ts](file://assets/script/game/common/config/GameEvent.ts#L1-L70)
|
||||
- [event.md](file://doc/core/common/event.md#L1-L44)
|
||||
|
||||
### EBusComp - 基于ECS的事件总线组件
|
||||
|
||||
#### EBusComp架构设计
|
||||
|
||||
EBusComp是基于ECS框架重构的事件总线组件,为角色视图和数据逻辑提供高效的通信机制。
|
||||
|
||||
```mermaid
|
||||
classDiagram
|
||||
class EBusComp {
|
||||
-_eventTarget : EventTarget
|
||||
+emit(event : string, data? : any) : void
|
||||
+on(event : string, listener : Function, object? : any) : void
|
||||
+off(event? : string, callback? : Function, target? : any) : void
|
||||
+once(event : string, callback : Function, target? : any) : void
|
||||
+targetOff(target : any) : void
|
||||
+reset() : void
|
||||
}
|
||||
class EventTarget {
|
||||
+emit(event : string, data? : any) : void
|
||||
+on(event : string, callback : Function, target? : any) : void
|
||||
+off(event : string, callback : Function, target? : any) : void
|
||||
+once(event : string, callback : Function, target? : any) : void
|
||||
+targetOff(target : any) : void
|
||||
}
|
||||
EBusComp --> EventTarget : 使用
|
||||
```
|
||||
|
||||
**图表来源**
|
||||
- [EBusComp.ts](file://assets/script/game/hero/EBusComp.ts#L6-L89)
|
||||
|
||||
#### 核心功能特性
|
||||
|
||||
1. **发布订阅模式**:提供标准的事件发布(emit)和订阅(on/once)接口
|
||||
2. **灵活的取消订阅**:支持多种取消订阅方式
|
||||
- 无参调用:清理本节点所有监听
|
||||
- 仅提供事件名:清理该事件名下所有回调
|
||||
- 完整参数:精确移除指定回调
|
||||
3. **内存管理**:在reset方法中自动清理所有事件监听,防止内存泄漏
|
||||
4. **ECS集成**:通过@ecs.register装饰器注册为ECS组件,实现框架级集成
|
||||
|
||||
#### 使用示例
|
||||
|
||||
```typescript
|
||||
// 发布事件
|
||||
this.entity.get(EBusComp).emit(GameEvent.HeroLvUp, { level: 5 });
|
||||
|
||||
// 订阅事件
|
||||
this.entity.get(EBusComp).on(GameEvent.HeroLvUp, this.onHeroLevelUp, this);
|
||||
|
||||
// 订阅一次性事件
|
||||
this.entity.get(EBusComp).once(GameEvent.MissionComplete, this.onMissionComplete, this);
|
||||
|
||||
// 取消订阅
|
||||
this.entity.get(EBusComp).off(GameEvent.HeroLvUp, this.onHeroLevelUp, this);
|
||||
```
|
||||
|
||||
**章节来源**
|
||||
- [EBusComp.ts](file://assets/script/game/hero/EBusComp.ts#L6-L89)
|
||||
|
||||
### 事件系统最佳实践
|
||||
|
||||
1. **持续监听**:适用于长期关注的事件
|
||||
2. **一次性监听**:适用于仅需响应一次的事件
|
||||
3. **内存管理**:及时取消不再需要的事件监听
|
||||
4. **ECS组件化**:利用EBusComp实现组件间的松耦合通信
|
||||
|
||||
**章节来源**
|
||||
- [event.md](file://doc/core/common/event.md#L1-L44)
|
||||
- [EBusComp.ts](file://assets/script/game/hero/EBusComp.ts#L6-L89)
|
||||
|
||||
## 资源加载系统
|
||||
|
||||
@@ -503,6 +572,8 @@ S --> T[资源释放]
|
||||
U[怪物系统] --> V[RogueConfig配置]
|
||||
V --> W[MissionMonComp生成]
|
||||
W --> X[属性计算]
|
||||
Y[ECS框架] --> Z[EBusComp事件总线]
|
||||
Z --> AA[组件间通信]
|
||||
```
|
||||
|
||||
**图表来源**
|
||||
@@ -510,6 +581,7 @@ W --> X[属性计算]
|
||||
- [Initialize.ts](file://assets/script/game/initialize/Initialize.ts#L1-L207)
|
||||
- [SingletonModuleComp.ts](file://assets/script/game/common/SingletonModuleComp.ts#L1-L194)
|
||||
- [RogueConfig.ts](file://assets/script/game/map/RogueConfig.ts#L0-L178)
|
||||
- [EBusComp.ts](file://assets/script/game/hero/EBusComp.ts#L6-L89)
|
||||
|
||||
### 数据流管理
|
||||
|
||||
@@ -533,6 +605,7 @@ W --> X[属性计算]
|
||||
2. **监听管理**:及时移除不需要的事件监听器
|
||||
3. **参数传递**:合理设计事件参数结构
|
||||
4. **性能考虑**:避免在高频事件中执行复杂操作
|
||||
5. **ECS集成**:充分利用EBusComp组件实现高效的组件间通信
|
||||
|
||||
### 资源管理最佳实践
|
||||
|
||||
@@ -559,4 +632,8 @@ W --> X[属性计算]
|
||||
|
||||
本游戏的核心运行系统通过模块化设计实现了高度的可维护性和扩展性。初始化系统确保游戏启动的稳定性和效率,事件系统提供了灵活的模块间通信机制,资源管理系统支持复杂的资源加载和管理需求,本地存储系统保障了数据的安全性和持久性。
|
||||
|
||||
新增的怪物生成系统通过RogueConfig.ts和MissionMonComp.ts实现了程序化的怪物生成逻辑,支持普通、精英、BOSS三种怪物类型,并通过属性倍率配置实现了差异化的设计。系统采用的异步队列模式、事件驱动架构和单例管理模式,为游戏开发提供了坚实的基础框架。通过合理的配置和优化,这套系统能够支持大型游戏项目的开发需求,同时保持良好的性能表现和用户体验。
|
||||
新增的怪物生成系统通过RogueConfig.ts和MissionMonComp.ts实现了程序化的怪物生成逻辑,支持普通、精英、BOSS三种怪物类型,并通过属性倍率配置实现了差异化的设计。系统采用的异步队列模式、事件驱动架构和单例管理模式,为游戏开发提供了坚实的基础框架。
|
||||
|
||||
特别值得注意的是,基于ECS框架重构了角色视图的数据逻辑,引入了EBusComp事件总线组件。这一改进不仅提升了系统的可维护性和扩展性,还实现了组件间的松耦合通信。EBusComp组件提供了标准的发布订阅接口,支持灵活的事件管理和内存清理机制,为游戏的长期发展奠定了良好的基础。
|
||||
|
||||
通过合理的配置和优化,这套系统能够支持大型游戏项目的开发需求,同时保持良好的性能表现和用户体验。
|
||||
Reference in New Issue
Block a user