refactor(game): 移除已弃用的事件常量
- 删除 UpdateHero 和 UpdateFightHero 事件 - 移除 MISSION_UPDATE 事件常量 - 优化游戏事件枚举定义
This commit is contained in:
140
.qoder/repowiki/zh/content/用户界面系统/怪物信息显示.md
Normal file
140
.qoder/repowiki/zh/content/用户界面系统/怪物信息显示.md
Normal file
@@ -0,0 +1,140 @@
|
||||
# 怪物信息显示
|
||||
|
||||
<cite>
|
||||
**本文档中引用的文件**
|
||||
- [MInfoComp.ts](file://assets/script/game/map/MInfoComp.ts)
|
||||
- [GameEvent.ts](file://assets/script/game/common/config/GameEvent.ts)
|
||||
- [SingletonModuleComp.ts](file://assets/script/game/common/SingletonModuleComp.ts)
|
||||
- [MissionComp.ts](file://assets/script/game/map/MissionComp.ts)
|
||||
- [VictoryComp.ts](file://assets/script/game/map/VictoryComp.ts)
|
||||
</cite>
|
||||
|
||||
## 目录
|
||||
1. [怪物信息显示功能概述](#怪物信息显示功能概述)
|
||||
2. [事件监听与数据更新机制](#事件监听与数据更新机制)
|
||||
3. [关卡数据获取与格式化](#关卡数据获取与格式化)
|
||||
4. [生命周期与初始化逻辑](#生命周期与初始化逻辑)
|
||||
5. [UI更新与数据流分析](#ui更新与数据流分析)
|
||||
6. [组件交互与系统集成](#组件交互与系统集成)
|
||||
|
||||
## 怪物信息显示功能概述
|
||||
|
||||
怪物信息显示组件(MInfoComp)负责在游戏界面中动态展示当前关卡信息。该组件通过监听游戏事件系统中的关卡更新事件,实时响应游戏进度变化,并将当前关卡数据格式化为"第 X 关"的文本形式显示在UI界面上。此功能作为游戏状态可视化的重要组成部分,为玩家提供清晰的进度反馈。
|
||||
|
||||
**Section sources**
|
||||
- [MInfoComp.ts](file://assets/script/game/map/MInfoComp.ts#L1-L27)
|
||||
|
||||
## 事件监听与数据更新机制
|
||||
|
||||
MInfoComp组件通过oops消息系统订阅GameEvent.MISSION_UPDATE事件,建立事件驱动的更新机制。当游戏中的关卡状态发生变化时,系统会广播该事件,触发MInfoComp组件的onMissionUpdate回调函数。这种事件监听模式实现了组件间的松耦合,确保UI更新仅在相关数据发生变化时才执行,提高了系统性能和响应效率。
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant 系统 as 游戏系统
|
||||
participant MInfoComp as MInfoComp组件
|
||||
participant SMC as SingletonModuleComp
|
||||
系统->>SMC : 更新smc.data.mission
|
||||
SMC->>系统 : dispatchEvent(GameEvent.MISSION_UPDATE)
|
||||
系统->>MInfoComp : onMissionUpdate回调
|
||||
MInfoComp->>SMC : 获取smc.data.mission
|
||||
MInfoComp->>自身 : update_mission更新UI
|
||||
```
|
||||
|
||||
**Diagram sources**
|
||||
- [MInfoComp.ts](file://assets/script/game/map/MInfoComp.ts#L9-L13)
|
||||
- [GameEvent.ts](file://assets/script/game/common/config/GameEvent.ts#L67)
|
||||
|
||||
**Section sources**
|
||||
- [MInfoComp.ts](file://assets/script/game/map/MInfoComp.ts#L9-L13)
|
||||
- [GameEvent.ts](file://assets/script/game/common/config/GameEvent.ts#L67)
|
||||
|
||||
## 关卡数据获取与格式化
|
||||
|
||||
组件通过全局单例smc.data.mission属性获取当前关卡数据。该数据存储在SingletonModuleComp的data对象中,初始值为1,表示游戏从第一关开始。在update_mission方法中,组件将数字类型的关卡号转换为字符串,并格式化为"第 X 关"的显示格式。这种格式化处理增强了用户界面的可读性和友好性,符合中文用户的阅读习惯。
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[开始] --> B{获取关卡数据}
|
||||
B --> C[smc.data.mission]
|
||||
C --> D[转换为字符串]
|
||||
D --> E[格式化为"第 X 关"]
|
||||
E --> F[更新Label组件]
|
||||
F --> G[结束]
|
||||
```
|
||||
|
||||
**Diagram sources**
|
||||
- [MInfoComp.ts](file://assets/script/game/map/MInfoComp.ts#L20-L23)
|
||||
- [SingletonModuleComp.ts](file://assets/script/game/common/SingletonModuleComp.ts#L40)
|
||||
|
||||
**Section sources**
|
||||
- [MInfoComp.ts](file://assets/script/game/map/MInfoComp.ts#L20-L23)
|
||||
- [SingletonModuleComp.ts](file://assets/script/game/common/SingletonModuleComp.ts#L40)
|
||||
|
||||
## 生命周期与初始化逻辑
|
||||
|
||||
在onLoad生命周期方法中,组件注册事件监听器并立即执行一次初始更新,确保UI在加载时显示正确的关卡信息。start方法中再次调用update_mission,形成双重保障机制,防止因事件订阅时机问题导致的显示延迟。这种设计模式确保了组件在不同加载场景下都能正确初始化,提高了代码的健壮性和可靠性。
|
||||
|
||||
```mermaid
|
||||
classDiagram
|
||||
class MInfoComp {
|
||||
+onLoad()
|
||||
+start()
|
||||
+onMissionUpdate(event, data)
|
||||
+update_mission(mission)
|
||||
}
|
||||
MInfoComp --> GameEvent : "监听"
|
||||
MInfoComp --> SingletonModuleComp : "读取数据"
|
||||
MInfoComp --> Label : "更新文本"
|
||||
```
|
||||
|
||||
**Diagram sources**
|
||||
- [MInfoComp.ts](file://assets/script/game/map/MInfoComp.ts#L8-L15)
|
||||
- [SingletonModuleComp.ts](file://assets/script/game/common/SingletonModuleComp.ts#L37-L40)
|
||||
|
||||
**Section sources**
|
||||
- [MInfoComp.ts](file://assets/script/game/map/MInfoComp.ts#L8-L15)
|
||||
|
||||
## UI更新与数据流分析
|
||||
|
||||
组件通过节点查找机制获取名为"mission"的子节点,并获取其Label组件实例,直接更新字符串属性。这种直接的UI操作方式简洁高效,避免了不必要的中间层。数据流从全局单例smc出发,经过事件系统触发,最终更新到UI组件,形成了清晰的数据传递路径。整个过程体现了MVC模式中视图与模型分离的设计思想。
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
A[smc.data.mission] --> B[GameEvent.MISSION_UPDATE]
|
||||
B --> C[MInfoComp.onMissionUpdate]
|
||||
C --> D[MInfoComp.update_mission]
|
||||
D --> E[Label.string更新]
|
||||
E --> F[UI显示变化]
|
||||
```
|
||||
|
||||
**Diagram sources**
|
||||
- [MInfoComp.ts](file://assets/script/game/map/MInfoComp.ts#L20-L23)
|
||||
- [SingletonModuleComp.ts](file://assets/script/game/common/SingletonModuleComp.ts#L37-L40)
|
||||
|
||||
**Section sources**
|
||||
- [MInfoComp.ts](file://assets/script/game/map/MInfoComp.ts#L20-L23)
|
||||
|
||||
## 组件交互与系统集成
|
||||
|
||||
MInfoComp与其他游戏组件通过事件系统协同工作。当玩家完成关卡时,VictoryComp组件会触发GameEvent.MissionEnd事件,随后新的关卡开始流程会更新smc.data.mission并广播GameEvent.MISSION_UPDATE事件。这种基于事件的通信机制使得各个功能模块能够独立开发和测试,同时保持良好的系统集成性,体现了高内聚低耦合的设计原则。
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant VictoryComp as VictoryComp
|
||||
participant MissionComp as MissionComp
|
||||
participant MInfoComp as MInfoComp
|
||||
VictoryComp->>MissionComp : 触发新关卡
|
||||
MissionComp->>SMC : 更新关卡数据
|
||||
SMC->>系统 : 广播MISSION_UPDATE
|
||||
系统->>MInfoComp : 更新显示
|
||||
```
|
||||
|
||||
**Diagram sources**
|
||||
- [MInfoComp.ts](file://assets/script/game/map/MInfoComp.ts#L9)
|
||||
- [VictoryComp.ts](file://assets/script/game/map/VictoryComp.ts#L60)
|
||||
- [MissionComp.ts](file://assets/script/game/map/MissionComp.ts#L85)
|
||||
|
||||
**Section sources**
|
||||
- [MInfoComp.ts](file://assets/script/game/map/MInfoComp.ts#L9)
|
||||
- [VictoryComp.ts](file://assets/script/game/map/VictoryComp.ts#L60)
|
||||
- [MissionComp.ts](file://assets/script/game/map/MissionComp.ts#L85)
|
||||
Reference in New Issue
Block a user