refactor(game): 移除已弃用的事件常量
- 删除 UpdateHero 和 UpdateFightHero 事件 - 移除 MISSION_UPDATE 事件常量 - 优化游戏事件枚举定义
This commit is contained in:
446
.qoder/repowiki/zh/content/奖励系统/奖励配置/任务奖励配置.md
Normal file
446
.qoder/repowiki/zh/content/奖励系统/奖励配置/任务奖励配置.md
Normal file
@@ -0,0 +1,446 @@
|
||||
# 任务奖励配置
|
||||
|
||||
<cite>
|
||||
**本文档中引用的文件**
|
||||
- [Tasks.ts](file://assets/script/game/common/config/Tasks.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)
|
||||
- [MissionHeroComp.ts](file://assets/script/game/map/MissionHeroComp.ts)
|
||||
- [GameEvent.ts](file://assets/script/game/common/config/GameEvent.ts)
|
||||
- [Guide.ts](file://assets/script/game/common/config/Guide.ts)
|
||||
- [Initialize.ts](file://assets/script/game/initialize/Initialize.ts)
|
||||
</cite>
|
||||
|
||||
## 目录
|
||||
1. [简介](#简介)
|
||||
2. [项目结构](#项目结构)
|
||||
3. [核心组件](#核心组件)
|
||||
4. [架构概览](#架构概览)
|
||||
5. [详细组件分析](#详细组件分析)
|
||||
6. [依赖关系分析](#依赖关系分析)
|
||||
7. [性能考虑](#性能考虑)
|
||||
8. [故障排除指南](#故障排除指南)
|
||||
9. [结论](#结论)
|
||||
|
||||
## 简介
|
||||
|
||||
本文档全面解析了《英雄传说》游戏中基于Tasks.ts文件的任务奖励配置系统。该系统负责管理游戏中的各种任务类型,包括新手指引任务和每日任务,并实现了完整的奖励发放机制。系统采用模块化设计,支持任务配置的动态加载、运行时查询和奖励数据的实时更新。
|
||||
|
||||
## 项目结构
|
||||
|
||||
任务奖励配置系统在项目中的组织结构如下:
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
subgraph "配置层"
|
||||
Tasks[Tasks.ts<br/>任务配置常量]
|
||||
GameEvent[GameEvent.ts<br/>游戏事件定义]
|
||||
Guide[Guide.ts<br/>引导系统]
|
||||
end
|
||||
subgraph "数据管理层"
|
||||
SingletonModule[SingletonModuleComp.ts<br/>单例模块管理]
|
||||
Initialize[Initialize.ts<br/>初始化系统]
|
||||
end
|
||||
subgraph "业务逻辑层"
|
||||
MissionComp[MissionComp.ts<br/>任务控制组件]
|
||||
VictoryComp[VictoryComp.ts<br/>胜利界面组件]
|
||||
MissionHeroComp[MissionHeroComp.ts<br/>英雄任务组件]
|
||||
end
|
||||
subgraph "UI展示层"
|
||||
MInfoComp[MInfoComp.ts<br/>任务信息组件]
|
||||
MapViewComp[MapViewComp.ts<br/>地图视图组件]
|
||||
end
|
||||
Tasks --> MissionComp
|
||||
GameEvent --> MissionComp
|
||||
SingletonModule --> MissionComp
|
||||
MissionComp --> VictoryComp
|
||||
MissionComp --> MInfoComp
|
||||
```
|
||||
|
||||
**图表来源**
|
||||
- [Tasks.ts](file://assets/script/game/common/config/Tasks.ts#L13-L28)
|
||||
- [MissionComp.ts](file://assets/script/game/map/MissionComp.ts#L1-L30)
|
||||
- [SingletonModuleComp.ts](file://assets/script/game/common/SingletonModuleComp.ts#L1-L50)
|
||||
|
||||
**章节来源**
|
||||
- [Tasks.ts](file://assets/script/game/common/config/Tasks.ts#L1-L28)
|
||||
- [MissionComp.ts](file://assets/script/game/map/MissionComp.ts#L1-L151)
|
||||
|
||||
## 核心组件
|
||||
|
||||
### 任务配置常量
|
||||
|
||||
Tasks.ts文件定义了游戏中的任务配置常量数组,包含以下关键字段:
|
||||
|
||||
| 字段名 | 类型 | 描述 | 示例值 |
|
||||
|--------|------|------|--------|
|
||||
| id | number | 任务唯一标识符 | 0, 1 |
|
||||
| name | string | 任务名称 | "新手指引", "每日任务" |
|
||||
| description | string | 任务描述 | "新手指引描述", "每日任务描述" |
|
||||
| reward | number | 奖励数值 | 100 |
|
||||
| type | number | 任务类型(可选) | 0 |
|
||||
|
||||
### 用户数据管理
|
||||
|
||||
SingletonModuleComp.ts提供了完整的用户数据管理系统,包含以下核心数据结构:
|
||||
|
||||
| 数据字段 | 类型 | 默认值 | 描述 |
|
||||
|----------|------|--------|------|
|
||||
| score | number | 0 | 游戏分数 |
|
||||
| mission | number | 1 | 当前关卡 |
|
||||
| diamond | number | 100 | 钻石数量 |
|
||||
| meat | number | 0 | 肉类资源 |
|
||||
| exp | number | 0 | 经验值 |
|
||||
| task | number | 0 | 任务进度 |
|
||||
|
||||
**章节来源**
|
||||
- [Tasks.ts](file://assets/script/game/common/config/Tasks.ts#L13-L28)
|
||||
- [SingletonModuleComp.ts](file://assets/script/game/common/SingletonModuleComp.ts#L37-L50)
|
||||
|
||||
## 架构概览
|
||||
|
||||
任务奖励配置系统采用分层架构设计,确保了良好的可维护性和扩展性:
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant Player as 玩家
|
||||
participant MissionComp as 任务控制器
|
||||
participant SingletonModule as 数据管理器
|
||||
participant Tasks as 任务配置
|
||||
participant VictoryComp as 胜利界面
|
||||
Player->>MissionComp : 开始任务
|
||||
MissionComp->>Tasks : 查询任务配置
|
||||
Tasks-->>MissionComp : 返回任务信息
|
||||
MissionComp->>MissionComp : 执行任务逻辑
|
||||
MissionComp->>Player : 显示任务进度
|
||||
Player->>MissionComp : 完成任务
|
||||
MissionComp->>SingletonModule : 更新用户数据
|
||||
SingletonModule->>SingletonModule : 存储到云端/本地
|
||||
MissionComp->>VictoryComp : 显示奖励界面
|
||||
VictoryComp->>Player : 展示奖励结果
|
||||
```
|
||||
|
||||
**图表来源**
|
||||
- [MissionComp.ts](file://assets/script/game/map/MissionComp.ts#L70-L90)
|
||||
- [SingletonModuleComp.ts](file://assets/script/game/common/SingletonModuleComp.ts#L81-L121)
|
||||
- [VictoryComp.ts](file://assets/script/game/map/VictoryComp.ts#L30-L50)
|
||||
|
||||
## 详细组件分析
|
||||
|
||||
### 任务配置组件
|
||||
|
||||
#### Tasks.ts - 任务配置核心
|
||||
|
||||
任务配置组件负责定义所有可用的任务类型及其奖励规则:
|
||||
|
||||
```mermaid
|
||||
classDiagram
|
||||
class TaskConfig {
|
||||
+number id
|
||||
+string name
|
||||
+string description
|
||||
+number reward
|
||||
+number type
|
||||
+validateTask() boolean
|
||||
+getRewardAmount() number
|
||||
}
|
||||
class Tasks {
|
||||
+TaskConfig[] tasks
|
||||
+findTaskById(id) TaskConfig
|
||||
+getDailyRewards() number[]
|
||||
+getTypeRewards(type) TaskConfig[]
|
||||
}
|
||||
Tasks --> TaskConfig : "包含多个"
|
||||
```
|
||||
|
||||
**图表来源**
|
||||
- [Tasks.ts](file://assets/script/game/common/config/Tasks.ts#L13-L28)
|
||||
|
||||
#### 任务类型与奖励规则
|
||||
|
||||
系统支持多种任务类型,每种类型具有不同的奖励计算规则:
|
||||
|
||||
| 任务类型 | ID | 奖励计算 | 特殊规则 |
|
||||
|----------|----|---------|---------|
|
||||
| 新手指引 | 0 | 固定奖励 | 一次性奖励,不可重复 |
|
||||
| 每日任务 | 1 | 固定奖励 | 每日刷新,可重复完成 |
|
||||
|
||||
**章节来源**
|
||||
- [Tasks.ts](file://assets/script/game/common/config/Tasks.ts#L13-L28)
|
||||
|
||||
### 任务执行组件
|
||||
|
||||
#### MissionComp.ts - 任务控制中心
|
||||
|
||||
任务控制组件管理整个任务生命周期,包括任务开始、执行和完成:
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
Start([任务开始]) --> LoadConfig["加载任务配置"]
|
||||
LoadConfig --> InitData["初始化任务数据"]
|
||||
InitData --> MonitorEvents["监控游戏事件"]
|
||||
MonitorEvents --> EventCheck{"事件检查"}
|
||||
EventCheck --> |怪物死亡| UpdateProgress["更新任务进度"]
|
||||
EventCheck --> |英雄死亡| CheckGameOver{"检查游戏结束"}
|
||||
EventCheck --> |任务完成| RewardCalculation["计算奖励"]
|
||||
UpdateProgress --> MonitorEvents
|
||||
CheckGameOver --> |失败| EndMission["结束任务"]
|
||||
CheckGameOver --> |继续| MonitorEvents
|
||||
RewardCalculation --> AwardRewards["发放奖励"]
|
||||
AwardRewards --> ShowVictory["显示胜利界面"]
|
||||
ShowVictory --> EndMission
|
||||
EndMission --> ResetData["重置任务数据"]
|
||||
ResetData --> End([任务结束])
|
||||
```
|
||||
|
||||
**图表来源**
|
||||
- [MissionComp.ts](file://assets/script/game/map/MissionComp.ts#L70-L150)
|
||||
|
||||
#### 奖励发放机制
|
||||
|
||||
奖励发放通过以下流程实现:
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant MissionComp as 任务控制器
|
||||
participant SingletonModule as 数据管理器
|
||||
participant VictoryComp as 胜利界面
|
||||
participant Player as 玩家
|
||||
MissionComp->>MissionComp : 检查任务完成条件
|
||||
MissionComp->>MissionComp : 计算奖励数值
|
||||
MissionComp->>SingletonModule : 更新用户数据
|
||||
SingletonModule->>SingletonModule : 验证数据完整性
|
||||
SingletonModule->>SingletonModule : 同步到云端/本地
|
||||
SingletonModule-->>MissionComp : 确认更新成功
|
||||
MissionComp->>VictoryComp : 打开胜利界面
|
||||
VictoryComp->>Player : 显示奖励详情
|
||||
Player->>VictoryComp : 确认奖励领取
|
||||
VictoryComp->>MissionComp : 完成奖励流程
|
||||
```
|
||||
|
||||
**图表来源**
|
||||
- [MissionComp.ts](file://assets/script/game/map/MissionComp.ts#L47-L50)
|
||||
- [VictoryComp.ts](file://assets/script/game/map/VictoryComp.ts#L30-L50)
|
||||
- [SingletonModuleComp.ts](file://assets/script/game/common/SingletonModuleComp.ts#L120-L140)
|
||||
|
||||
**章节来源**
|
||||
- [MissionComp.ts](file://assets/script/game/map/MissionComp.ts#L47-L50)
|
||||
- [VictoryComp.ts](file://assets/script/game/map/VictoryComp.ts#L30-L50)
|
||||
|
||||
### 用户数据管理组件
|
||||
|
||||
#### SingletonModuleComp.ts - 数据管理中心
|
||||
|
||||
数据管理中心负责维护玩家的全局状态和持久化存储:
|
||||
|
||||
```mermaid
|
||||
classDiagram
|
||||
class SingletonModuleComp {
|
||||
+Object data
|
||||
+Object vmdata
|
||||
+number fight_hero
|
||||
+Array heros
|
||||
+Array monsters
|
||||
+updateGold(amount) boolean
|
||||
+updateFihgtHero(heroId) boolean
|
||||
+addHero(hero_uuid) boolean
|
||||
+updateCloudData() boolean
|
||||
+getCloudData() void
|
||||
}
|
||||
class UserData {
|
||||
+number gold
|
||||
+number exp
|
||||
+number diamond
|
||||
+number meat
|
||||
+number task
|
||||
+number score
|
||||
+number mission
|
||||
}
|
||||
class MissionData {
|
||||
+number mon_num
|
||||
+number hero_num
|
||||
+number fight_time
|
||||
+boolean in_fight
|
||||
+number level
|
||||
+number coin
|
||||
}
|
||||
SingletonModuleComp --> UserData : "管理"
|
||||
SingletonModuleComp --> MissionData : "管理"
|
||||
```
|
||||
|
||||
**图表来源**
|
||||
- [SingletonModuleComp.ts](file://assets/script/game/common/SingletonModuleComp.ts#L37-L50)
|
||||
|
||||
**章节来源**
|
||||
- [SingletonModuleComp.ts](file://assets/script/game/common/SingletonModuleComp.ts#L37-L87)
|
||||
|
||||
### 初始化系统
|
||||
|
||||
#### Initialize.ts - 系统初始化
|
||||
|
||||
初始化系统负责在游戏启动时加载必要的配置和数据:
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
Start([游戏启动]) --> CheckPlatform{"检查平台"}
|
||||
CheckPlatform --> |微信客户端| LoadCloud["加载云端数据"]
|
||||
CheckPlatform --> |其他平台| LoadLocal["加载本地数据"]
|
||||
LoadCloud --> LoginCloud["云端登录"]
|
||||
LoginCloud --> ValidateData{"验证数据"}
|
||||
ValidateData --> |成功| OverrideLocal["覆盖本地数据"]
|
||||
ValidateData --> |失败| UseDefault["使用默认数据"]
|
||||
LoadLocal --> UseDefault
|
||||
OverrideLocal --> InitComplete["初始化完成"]
|
||||
UseDefault --> InitComplete
|
||||
InitComplete --> StartGame["启动游戏"]
|
||||
```
|
||||
|
||||
**图表来源**
|
||||
- [Initialize.ts](file://assets/script/game/initialize/Initialize.ts#L80-L140)
|
||||
|
||||
**章节来源**
|
||||
- [Initialize.ts](file://assets/script/game/initialize/Initialize.ts#L80-L140)
|
||||
|
||||
## 依赖关系分析
|
||||
|
||||
任务奖励配置系统的依赖关系如下:
|
||||
|
||||
```mermaid
|
||||
graph LR
|
||||
subgraph "外部依赖"
|
||||
OopsFramework[Oops Framework]
|
||||
WeChatAPI[微信API]
|
||||
end
|
||||
subgraph "内部模块"
|
||||
Tasks[Tasks配置]
|
||||
GameEvent[游戏事件]
|
||||
SingletonModule[单例模块]
|
||||
MissionComp[任务组件]
|
||||
VictoryComp[胜利组件]
|
||||
end
|
||||
Tasks --> MissionComp
|
||||
GameEvent --> MissionComp
|
||||
SingletonModule --> MissionComp
|
||||
MissionComp --> VictoryComp
|
||||
SingletonModule --> WeChatAPI
|
||||
MissionComp --> OopsFramework
|
||||
VictoryComp --> OopsFramework
|
||||
```
|
||||
|
||||
**图表来源**
|
||||
- [Tasks.ts](file://assets/script/game/common/config/Tasks.ts#L1-L10)
|
||||
- [MissionComp.ts](file://assets/script/game/map/MissionComp.ts#L1-L15)
|
||||
- [SingletonModuleComp.ts](file://assets/script/game/common/SingletonModuleComp.ts#L1-L15)
|
||||
|
||||
**章节来源**
|
||||
- [Tasks.ts](file://assets/script/game/common/config/Tasks.ts#L1-L10)
|
||||
- [MissionComp.ts](file://assets/script/game/map/MissionComp.ts#L1-L15)
|
||||
|
||||
## 性能考虑
|
||||
|
||||
### 任务配置加载优化
|
||||
|
||||
1. **静态配置缓存**:任务配置作为常量数组,在游戏启动时一次性加载到内存
|
||||
2. **按需查询**:通过ID索引快速定位特定任务配置
|
||||
3. **类型检查**:运行时验证任务配置的完整性
|
||||
|
||||
### 数据更新性能
|
||||
|
||||
1. **批量更新**:将多个数据变更合并为单次更新操作
|
||||
2. **异步处理**:云端数据同步采用异步方式,避免阻塞主线程
|
||||
3. **增量更新**:只更新发生变化的数据项
|
||||
|
||||
### 内存管理
|
||||
|
||||
1. **对象池**:复用任务相关对象,减少垃圾回收压力
|
||||
2. **弱引用**:对临时对象使用弱引用,便于及时回收
|
||||
3. **定时清理**:定期清理过期的任务数据
|
||||
|
||||
## 故障排除指南
|
||||
|
||||
### 常见问题及解决方案
|
||||
|
||||
#### 任务奖励未发放
|
||||
|
||||
**问题症状**:任务完成后未获得预期奖励
|
||||
|
||||
**排查步骤**:
|
||||
1. 检查任务配置中的reward字段是否正确设置
|
||||
2. 验证用户数据更新逻辑是否正常执行
|
||||
3. 确认云端同步功能是否工作正常
|
||||
|
||||
**解决方案**:
|
||||
```typescript
|
||||
// 检查任务配置
|
||||
if (!task.reward || task.reward <= 0) {
|
||||
console.error("任务奖励配置错误:", task);
|
||||
return false;
|
||||
}
|
||||
|
||||
// 验证数据更新
|
||||
if (!smc.updateGold(task.reward)) {
|
||||
console.error("奖励发放失败");
|
||||
return false;
|
||||
}
|
||||
```
|
||||
|
||||
#### 任务进度不更新
|
||||
|
||||
**问题症状**:任务进度显示异常或不更新
|
||||
|
||||
**排查步骤**:
|
||||
1. 检查GameEvent监听器是否正确注册
|
||||
2. 验证任务完成条件判断逻辑
|
||||
3. 确认UI组件的数据绑定是否正确
|
||||
|
||||
#### 云端数据同步失败
|
||||
|
||||
**问题症状**:本地数据与云端数据不一致
|
||||
|
||||
**排查步骤**:
|
||||
1. 检查网络连接状态
|
||||
2. 验证微信API初始化是否成功
|
||||
3. 查看错误日志获取详细信息
|
||||
|
||||
**解决方案**:
|
||||
```typescript
|
||||
// 云端数据同步检查
|
||||
async function syncDataWithCloud() {
|
||||
try {
|
||||
const result = await smc.updateCloudData();
|
||||
if (!result) {
|
||||
throw new Error("云端数据同步失败");
|
||||
}
|
||||
console.log("数据同步成功");
|
||||
} catch (error) {
|
||||
console.error("数据同步异常:", error);
|
||||
// 回滚到本地数据
|
||||
smc.getCloudData();
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**章节来源**
|
||||
- [SingletonModuleComp.ts](file://assets/script/game/common/SingletonModuleComp.ts#L81-L121)
|
||||
- [MissionComp.ts](file://assets/script/game/map/MissionComp.ts#L47-L50)
|
||||
|
||||
## 结论
|
||||
|
||||
《英雄传说》任务奖励配置系统通过模块化的设计和清晰的职责分离,实现了高效、可靠的任务管理功能。系统支持多种任务类型,具备完善的奖励发放机制,并提供了灵活的扩展接口。
|
||||
|
||||
### 系统优势
|
||||
|
||||
1. **配置灵活**:通过Tasks.ts文件集中管理任务配置
|
||||
2. **数据安全**:支持云端和本地双重存储机制
|
||||
3. **性能优化**:采用缓存和异步处理提升响应速度
|
||||
4. **易于维护**:清晰的代码结构和完善的错误处理
|
||||
|
||||
### 扩展建议
|
||||
|
||||
1. **任务类型扩展**:增加更多任务类型如成就任务、挑战任务
|
||||
2. **奖励多样化**:支持多种奖励类型如道具、技能等
|
||||
3. **数据分析**:添加任务完成率统计和玩家行为分析
|
||||
4. **社交功能**:支持任务分享和好友竞争功能
|
||||
|
||||
该系统为游戏提供了坚实的任务管理基础,能够有效支撑游戏的核心玩法和用户粘性。
|
||||
670
.qoder/repowiki/zh/content/奖励系统/奖励配置/奖励提示类型定义.md
Normal file
670
.qoder/repowiki/zh/content/奖励系统/奖励配置/奖励提示类型定义.md
Normal file
@@ -0,0 +1,670 @@
|
||||
# 奖励提示类型定义
|
||||
|
||||
<cite>
|
||||
**本文档引用的文件**
|
||||
- [Mission.ts](file://assets/script/game/common/config/Mission.ts)
|
||||
- [TooltipCom.ts](file://assets/script/game/skill/TooltipCom.ts)
|
||||
- [Tooltip.ts](file://assets/script/game/skill/Tooltip.ts)
|
||||
- [BuffComp.ts](file://assets/script/game/hero/BuffComp.ts)
|
||||
- [HeroViewComp.ts](file://assets/script/game/hero/HeroViewComp.ts)
|
||||
- [SkillSet.ts](file://assets/script/game/common/config/SkillSet.ts)
|
||||
</cite>
|
||||
|
||||
## 目录
|
||||
1. [简介](#简介)
|
||||
2. [TooltipTypes常量定义](#tooltiptypes常量定义)
|
||||
3. [类型映射关系](#类型映射关系)
|
||||
4. [UI奖励提示系统架构](#ui奖励提示系统架构)
|
||||
5. [具体类型应用场景](#具体类型应用场景)
|
||||
6. [代码实现分析](#代码实现分析)
|
||||
7. [新增提示类型的配置步骤](#新增提示类型的配置步骤)
|
||||
8. [常见集成问题及解决方案](#常见集成问题及解决方案)
|
||||
9. [性能优化建议](#性能优化建议)
|
||||
10. [总结](#总结)
|
||||
|
||||
## 简介
|
||||
|
||||
奖励提示系统是游戏中的重要视觉反馈机制,用于向玩家展示各种奖励效果和状态变化。本文档详细解析了Mission.ts中TooltipTypes常量的定义,说明了各种提示类型对应的数值标识及其在游戏中的实际应用场景,并解释了这些类型如何与UI奖励提示系统(如TooltipCom.ts)协同工作,实现不同奖励效果的视觉反馈。
|
||||
|
||||
## TooltipTypes常量定义
|
||||
|
||||
### 核心常量结构
|
||||
|
||||
TooltipTypes常量定义在Mission.ts文件中,采用简洁的对象字面量形式:
|
||||
|
||||
```typescript
|
||||
export const TooltipTypes = {
|
||||
life:1,
|
||||
health:2,
|
||||
skill:3,
|
||||
crit:4,
|
||||
uskill:5,
|
||||
lvup:6,
|
||||
apup:7,
|
||||
hpup:8,
|
||||
}
|
||||
```
|
||||
|
||||
### 类型定义说明
|
||||
|
||||
| 类型名称 | 数值标识 | 描述 |
|
||||
|---------|---------|------|
|
||||
| life | 1 | 减少生命值提示 |
|
||||
| health | 2 | 增加生命值提示 |
|
||||
| skill | 3 | 技能激活提示 |
|
||||
| crit | 4 | 暴击伤害提示 |
|
||||
| uskill | 5 | 特殊技能效果提示 |
|
||||
| lvup | 6 | 等级提升提示 |
|
||||
| apup | 7 | 攻击力提升提示 |
|
||||
| hpup | 8 | 生命值上限提升提示 |
|
||||
|
||||
**节来源**
|
||||
- [Mission.ts](file://assets/script/game/common/config/Mission.ts#L44-L52)
|
||||
|
||||
## 类型映射关系
|
||||
|
||||
### 枚举与数值映射
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
A[TooltipTypes常量] --> B[life: 1]
|
||||
A --> C[health: 2]
|
||||
A --> D[skill: 3]
|
||||
A --> E[crit: 4]
|
||||
A --> F[uskill: 5]
|
||||
A --> G[lvup: 6]
|
||||
A --> H[apup: 7]
|
||||
A --> I[hpup: 8]
|
||||
B --> J[减少生命值效果]
|
||||
C --> K[增加生命值效果]
|
||||
D --> L[技能激活效果]
|
||||
E --> M[特殊技能效果]
|
||||
F --> N[等级提升效果]
|
||||
G --> O[攻击力提升效果]
|
||||
H --> P[生命值上限提升效果]
|
||||
```
|
||||
|
||||
**图表来源**
|
||||
- [Mission.ts](file://assets/script/game/common/config/Mission.ts#L44-L52)
|
||||
|
||||
### 对应的UI元素结构
|
||||
|
||||
每种类型对应不同的UI子节点和显示内容:
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[TooltipCom.start] --> B{stype判断}
|
||||
B --> |1 - life| C[loss_life节点]
|
||||
B --> |2 - health| D[add_life节点]
|
||||
B --> |3 - skill| E[skill节点]
|
||||
B --> |4 - crit| F[bloss节点]
|
||||
B --> |5 - uskill| G[uskill节点]
|
||||
B --> |6 - lvup| H[lvup节点]
|
||||
B --> |7 - apup| I[apup节点]
|
||||
B --> |8 - hpup| J[hpup节点]
|
||||
C --> K[显示伤害数值]
|
||||
D --> L[显示恢复数值]
|
||||
E --> M[显示技能名称]
|
||||
F --> N[显示暴击数值]
|
||||
G --> O[显示特殊效果]
|
||||
H --> P[显示升级效果]
|
||||
I --> Q[显示攻击力提升]
|
||||
J --> R[显示生命值提升]
|
||||
```
|
||||
|
||||
**图表来源**
|
||||
- [TooltipCom.ts](file://assets/script/game/skill/TooltipCom.ts#L26-L101)
|
||||
|
||||
## UI奖励提示系统架构
|
||||
|
||||
### 系统组件关系
|
||||
|
||||
```mermaid
|
||||
classDiagram
|
||||
class Tooltip {
|
||||
+TooltipView : TooltipCom
|
||||
+load(pos, type, value, s_uuid, parent, cd)
|
||||
+destroy()
|
||||
}
|
||||
class TooltipCom {
|
||||
+stype : number
|
||||
+value : string
|
||||
+s_uuid : number
|
||||
+alive_time : number
|
||||
+start()
|
||||
+do_up()
|
||||
+to_destroy()
|
||||
+reset()
|
||||
}
|
||||
class BuffComp {
|
||||
+tooltip(type, value, s_uuid, y)
|
||||
+hp_tip(type, value, s_uuid, y)
|
||||
+show_shield(shield, shield_max)
|
||||
+hp_show(hp, hp_max)
|
||||
+ap_up()
|
||||
+lv_up()
|
||||
}
|
||||
class HeroViewComp {
|
||||
+do_atked(remainingDamage, CAttrs, s_uuid)
|
||||
+check_dodge()
|
||||
+check_crit(crit)
|
||||
+playSkillEffect(skill_id)
|
||||
+showDamage(damage, isCrit, anm)
|
||||
}
|
||||
Tooltip --> TooltipCom : "管理"
|
||||
BuffComp --> Tooltip : "使用"
|
||||
HeroViewComp --> BuffComp : "调用"
|
||||
HeroViewComp --> Tooltip : "直接调用"
|
||||
```
|
||||
|
||||
**图表来源**
|
||||
- [Tooltip.ts](file://assets/script/game/skill/Tooltip.ts#L10-L30)
|
||||
- [TooltipCom.ts](file://assets/script/game/skill/TooltipCom.ts#L12-L25)
|
||||
- [BuffComp.ts](file://assets/script/game/hero/BuffComp.ts#L10-L30)
|
||||
- [HeroViewComp.ts](file://assets/script/game/hero/HeroViewComp.ts#L540-L580)
|
||||
|
||||
### 数据流向
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant Player as 玩家操作
|
||||
participant Hero as HeroViewComp
|
||||
participant Buff as BuffComp
|
||||
participant Tooltip as Tooltip
|
||||
participant Com as TooltipCom
|
||||
Player->>Hero : 触发事件(攻击/技能/死亡等)
|
||||
Hero->>Hero : 计算结果
|
||||
Hero->>Buff : 调用tooltip()方法
|
||||
Buff->>Tooltip : 获取Tooltip实体
|
||||
Tooltip->>Tooltip : 加载预制件
|
||||
Tooltip->>Com : 创建TooltipCom实例
|
||||
Com->>Com : 根据stype设置UI
|
||||
Com->>Com : 启动动画和定时器
|
||||
Com->>Com : 自动销毁
|
||||
```
|
||||
|
||||
**图表来源**
|
||||
- [HeroViewComp.ts](file://assets/script/game/hero/HeroViewComp.ts#L540-L580)
|
||||
- [BuffComp.ts](file://assets/script/game/hero/BuffComp.ts#L185-L210)
|
||||
- [Tooltip.ts](file://assets/script/game/skill/Tooltip.ts#L35-L49)
|
||||
|
||||
**节来源**
|
||||
- [Tooltip.ts](file://assets/script/game/skill/Tooltip.ts#L10-L49)
|
||||
- [TooltipCom.ts](file://assets/script/game/skill/TooltipCom.ts#L12-L101)
|
||||
- [BuffComp.ts](file://assets/script/game/hero/BuffComp.ts#L10-L210)
|
||||
|
||||
## 具体类型应用场景
|
||||
|
||||
### life类型 - 减少生命值提示
|
||||
|
||||
**应用场景:**
|
||||
- 英雄受到伤害时显示
|
||||
- 怪物攻击玩家时显示
|
||||
- 各种负面效果造成的伤害
|
||||
|
||||
**实现特点:**
|
||||
- 使用`loss_life`节点显示
|
||||
- 数值显示在`hp`标签中
|
||||
- 动画效果:从当前位置向上移动
|
||||
- 持续时间:0.5秒后自动销毁
|
||||
|
||||
**节来源**
|
||||
- [TooltipCom.ts](file://assets/script/game/skill/TooltipCom.ts#L26-L33)
|
||||
- [HeroViewComp.ts](file://assets/script/game/hero/HeroViewComp.ts#L774)
|
||||
|
||||
### health类型 - 增加生命值提示
|
||||
|
||||
**应用场景:**
|
||||
- 回复技能效果
|
||||
- 治疗道具使用
|
||||
- 生命值恢复效果
|
||||
|
||||
**实现特点:**
|
||||
- 使用`add_life`节点显示
|
||||
- 数值显示在`hp`标签中
|
||||
- 层级索引:110(高于其他提示)
|
||||
- 动画效果:从当前位置向上移动
|
||||
|
||||
**节来源**
|
||||
- [TooltipCom.ts](file://assets/script/game/skill/TooltipCom.ts#L35-L42)
|
||||
- [HeroViewComp.ts](file://assets/script/game/hero/HeroViewComp.ts#L540-L550)
|
||||
|
||||
### skill类型 - 技能激活提示
|
||||
|
||||
**应用场景:**
|
||||
- 主要技能激活
|
||||
- 技能冷却完成
|
||||
- 特殊技能触发
|
||||
|
||||
**实现特点:**
|
||||
- 使用`skill`节点显示
|
||||
- 显示技能名称(从SkillSet获取)
|
||||
- 位置偏移:y坐标+30
|
||||
- 持续时间:0.5秒
|
||||
|
||||
**节来源**
|
||||
- [TooltipCom.ts](file://assets/script/game/skill/TooltipCom.ts#L52-L60)
|
||||
- [HeroViewComp.ts](file://assets/script/game/hero/HeroViewComp.ts#L730)
|
||||
|
||||
### crit类型 - 暴击伤害提示
|
||||
|
||||
**应用场景:**
|
||||
- 暴击攻击造成伤害
|
||||
- 暴击回复效果
|
||||
- 暴击触发的特殊效果
|
||||
|
||||
**实现特点:**
|
||||
- 使用`bloss`节点显示
|
||||
- 数值显示在`hp`标签中
|
||||
- 层级索引:200(最高层级)
|
||||
- 动画效果:从当前位置向上移动
|
||||
|
||||
**节来源**
|
||||
- [TooltipCom.ts](file://assets/script/game/skill/TooltipCom.ts#L43-L50)
|
||||
- [HeroViewComp.ts](file://assets/script/game/hero/HeroViewComp.ts#L771)
|
||||
|
||||
### uskill类型 - 特殊技能效果提示
|
||||
|
||||
**应用场景:**
|
||||
- 闪避成功
|
||||
- 护盾吸收伤害
|
||||
- 其他特殊技能效果
|
||||
|
||||
**实现特点:**
|
||||
- 使用`uskill`节点显示
|
||||
- 直接显示预设文本(如"*吸收*"、"*闪避*")
|
||||
- 位置偏移:y坐标+30
|
||||
- 持续时间:0.5秒
|
||||
|
||||
**节来源**
|
||||
- [TooltipCom.ts](file://assets/script/game/skill/TooltipCom.ts#L60-L68)
|
||||
- [HeroViewComp.ts](file://assets/script/game/hero/HeroViewComp.ts#L667)
|
||||
|
||||
### lvup类型 - 等级提升提示
|
||||
|
||||
**应用场景:**
|
||||
- 英雄等级提升
|
||||
- 经验值达到新等级
|
||||
- 系统通知等级变化
|
||||
|
||||
**实现特点:**
|
||||
- 使用`lvup`节点显示
|
||||
- 位置偏移:y坐标-30
|
||||
- 持续时间:0.5秒
|
||||
- (注:当前实现中未显示具体数值)
|
||||
|
||||
**节来源**
|
||||
- [TooltipCom.ts](file://assets/script/game/skill/TooltipCom.ts#L68-L76)
|
||||
- [BuffComp.ts](file://assets/script/game/hero/BuffComp.ts#L110-L115)
|
||||
|
||||
### apup类型 - 攻击力提升提示
|
||||
|
||||
**应用场景:**
|
||||
- 攻击力属性提升
|
||||
- 攻击力增益效果
|
||||
- 装备强化效果
|
||||
|
||||
**实现特点:**
|
||||
- 使用`apup`节点显示
|
||||
- 数值显示在`num`标签中,带"+"前缀
|
||||
- 位置偏移:y坐标-60
|
||||
- 持续时间:0.5秒
|
||||
|
||||
**节来源**
|
||||
- [TooltipCom.ts](file://assets/script/game/skill/TooltipCom.ts#L76-L84)
|
||||
- [BuffComp.ts](file://assets/script/game/hero/BuffComp.ts#L115-L120)
|
||||
|
||||
### hpup类型 - 生命值上限提升提示
|
||||
|
||||
**应用场景:**
|
||||
- 生命值上限增加
|
||||
- 生命值成长效果
|
||||
- 生命值相关增益
|
||||
|
||||
**实现特点:**
|
||||
- 使用`hpup`节点显示
|
||||
- 数值显示在`num`标签中,带"+"前缀
|
||||
- 位置偏移:y坐标-60
|
||||
- 持续时间:0.5秒
|
||||
|
||||
**节来源**
|
||||
- [TooltipCom.ts](file://assets/script/game/skill/TooltipCom.ts#L84-L92)
|
||||
- [BuffComp.ts](file://assets/script/game/hero/BuffComp.ts#L120-L125)
|
||||
|
||||
## 代码实现分析
|
||||
|
||||
### TooltipCom核心逻辑
|
||||
|
||||
TooltipCom组件负责具体的UI显示逻辑,其核心switch语句处理不同类型:
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[TooltipCom.start] --> B[接收stype参数]
|
||||
B --> C{switch(stype)}
|
||||
C --> |1| D[life类型处理]
|
||||
C --> |2| E[health类型处理]
|
||||
C --> |3| F[skill类型处理]
|
||||
C --> |4| G[crit类型处理]
|
||||
C --> |5| H[uskill类型处理]
|
||||
C --> |6| I[lvup类型处理]
|
||||
C --> |7| J[apup类型处理]
|
||||
C --> |8| K[hpup类型处理]
|
||||
D --> L[设置位置和层级]
|
||||
D --> M[显示loss_life节点]
|
||||
D --> N[设置数值文本]
|
||||
D --> O[启动定时器销毁]
|
||||
E --> P[设置层级110]
|
||||
E --> Q[显示add_life节点]
|
||||
E --> R[设置数值文本]
|
||||
E --> S[启动定时器销毁]
|
||||
F --> T[显示skill节点]
|
||||
F --> U[设置技能名称]
|
||||
F --> V[调整位置]
|
||||
F --> W[启动定时器销毁]
|
||||
G --> X[设置层级200]
|
||||
G --> Y[显示bloss节点]
|
||||
G --> Z[设置数值文本]
|
||||
G --> AA[启动定时器销毁]
|
||||
H --> BB[显示uskill节点]
|
||||
H --> CC[设置预设文本]
|
||||
H --> DD[调整位置]
|
||||
H --> EE[启动定时器销毁]
|
||||
I --> FF[显示lvup节点]
|
||||
I --> GG[调整位置]
|
||||
I --> HH[启动定时器销毁]
|
||||
J --> II[显示apup节点]
|
||||
J --> JJ[设置带+的数值]
|
||||
J --> KK[调整位置]
|
||||
J --> LL[启动定时器销毁]
|
||||
K --> MM[显示hpup节点]
|
||||
K --> NN[设置带+的数值]
|
||||
K --> OO[调整位置]
|
||||
K --> PP[启动定时器销毁]
|
||||
```
|
||||
|
||||
**图表来源**
|
||||
- [TooltipCom.ts](file://assets/script/game/skill/TooltipCom.ts#L26-L101)
|
||||
|
||||
### Tooltip加载流程
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant Client as 调用方
|
||||
participant Tooltip as Tooltip实体
|
||||
participant ResMgr as 资源管理器
|
||||
participant Prefab as 提示预制件
|
||||
participant Com as TooltipCom组件
|
||||
Client->>Tooltip : load(pos, type, value, s_uuid, parent)
|
||||
Tooltip->>ResMgr : 获取"game/skill/buff/tooltip"预制件
|
||||
ResMgr-->>Tooltip : 返回Prefab实例
|
||||
Tooltip->>Prefab : instantiate(prefab)
|
||||
Prefab-->>Tooltip : 返回Node实例
|
||||
Tooltip->>Tooltip : 设置父节点和位置
|
||||
Tooltip->>Tooltip : 检查父节点缩放
|
||||
Tooltip->>Com : 获取TooltipCom组件
|
||||
Tooltip->>Com : 设置stype、value、s_uuid、alive_time
|
||||
Tooltip->>Tooltip : 添加到实体
|
||||
Tooltip-->>Client : 完成加载
|
||||
```
|
||||
|
||||
**图表来源**
|
||||
- [Tooltip.ts](file://assets/script/game/skill/Tooltip.ts#L35-L49)
|
||||
|
||||
### BuffComp工具方法
|
||||
|
||||
BuffComp提供了两个主要的工具方法来简化Tooltip的使用:
|
||||
|
||||
#### tooltip()方法
|
||||
- 通用提示方法
|
||||
- 参数:type(类型)、value(数值)、s_uuid(技能UUID)、y(垂直偏移)
|
||||
- 位置计算:基于节点的相对位置
|
||||
|
||||
#### hp_tip()方法
|
||||
- 生命值相关提示专用方法
|
||||
- 参数:type(类型)、value(数值)、s_uuid(技能UUID)、y(垂直偏移)
|
||||
- 位置计算:基于节点高度的绝对位置
|
||||
|
||||
**节来源**
|
||||
- [BuffComp.ts](file://assets/script/game/hero/BuffComp.ts#L185-L210)
|
||||
|
||||
## 新增提示类型的配置步骤
|
||||
|
||||
### 步骤1:修改TooltipTypes常量
|
||||
|
||||
在Mission.ts中添加新的类型定义:
|
||||
|
||||
```typescript
|
||||
export const TooltipTypes = {
|
||||
// ... 现有类型
|
||||
newType: 9, // 新增类型,使用下一个可用数值
|
||||
}
|
||||
```
|
||||
|
||||
### 步骤2:更新TooltipCom处理逻辑
|
||||
|
||||
在TooltipCom.ts的switch语句中添加新的case分支:
|
||||
|
||||
```typescript
|
||||
case TooltipTypes.newType:
|
||||
this.node.getChildByName("newType").getChildByName("value").getComponent(Label).string = this.value;
|
||||
this.node.getChildByName("newType").active = true;
|
||||
this.node.setPosition(v3(this.node.position.x, this.node.position.y + offset));
|
||||
this.scheduleOnce(() => {
|
||||
this.ent.destroy()
|
||||
}, this.alive_time);
|
||||
break
|
||||
```
|
||||
|
||||
### 步骤3:创建对应的UI节点
|
||||
|
||||
在提示预制件中添加新的UI节点:
|
||||
- 在Canvas下创建名为`newType`的子节点
|
||||
- 添加必要的子节点(如数值显示标签)
|
||||
- 设置适当的层级和初始状态
|
||||
|
||||
### 步骤4:测试和验证
|
||||
|
||||
1. **功能测试**:确保新类型能够正确显示
|
||||
2. **层级测试**:验证显示层级是否符合预期
|
||||
3. **动画测试**:确认动画效果正常
|
||||
4. **性能测试**:检查是否存在性能问题
|
||||
|
||||
### 注意事项
|
||||
|
||||
1. **数值唯一性**:确保每个类型的数值都是唯一的
|
||||
2. **层级管理**:合理设置显示层级,避免遮挡
|
||||
3. **资源管理**:及时销毁不需要的提示对象
|
||||
4. **兼容性**:确保新类型与现有系统兼容
|
||||
5. **国际化**:如果支持多语言,考虑文本本地化
|
||||
|
||||
## 常见集成问题及解决方案
|
||||
|
||||
### 问题1:提示显示位置不正确
|
||||
|
||||
**症状**:提示出现在错误的位置
|
||||
|
||||
**原因**:
|
||||
- 父节点变换影响
|
||||
- 缩放比例问题
|
||||
- 坐标系转换错误
|
||||
|
||||
**解决方案**:
|
||||
```typescript
|
||||
// 在Tooltip.ts中已处理
|
||||
if(parent.scale.x < 0){
|
||||
node.setScale(-node.scale.x, node.scale.y, 0);
|
||||
}
|
||||
```
|
||||
|
||||
### 问题2:提示层级混乱
|
||||
|
||||
**症状**:某些提示被其他UI元素遮挡
|
||||
|
||||
**原因**:
|
||||
- 层级索引设置不当
|
||||
- 动态层级管理缺失
|
||||
|
||||
**解决方案**:
|
||||
```typescript
|
||||
// 在TooltipCom.ts中已处理
|
||||
case TooltipTypes.health:
|
||||
this.node.setSiblingIndex(110); // 明确设置层级
|
||||
break
|
||||
```
|
||||
|
||||
### 问题3:提示消失过快或过慢
|
||||
|
||||
**症状**:提示持续时间不符合预期
|
||||
|
||||
**原因**:
|
||||
- alive_time设置不当
|
||||
- 销毁时机错误
|
||||
|
||||
**解决方案**:
|
||||
```typescript
|
||||
// 在Tooltip.ts中统一设置
|
||||
sv.alive_time = 0.5; // 统一的持续时间
|
||||
```
|
||||
|
||||
### 问题4:内存泄漏
|
||||
|
||||
**症状**:长时间运行后出现内存占用过高
|
||||
|
||||
**原因**:
|
||||
- 提示对象未正确销毁
|
||||
- 事件监听器未清理
|
||||
|
||||
**解决方案**:
|
||||
```typescript
|
||||
// 在TooltipCom.ts中确保正确销毁
|
||||
scheduleOnce(() => {
|
||||
this.ent.destroy()
|
||||
}, this.alive_time);
|
||||
```
|
||||
|
||||
### 问题5:动画效果异常
|
||||
|
||||
**症状**:提示动画不流畅或不正确
|
||||
|
||||
**原因**:
|
||||
- Tween动画配置错误
|
||||
- 更新频率不匹配
|
||||
|
||||
**解决方案**:
|
||||
```typescript
|
||||
// 在TooltipCom.ts中使用正确的动画配置
|
||||
tween(this.node).to(
|
||||
this.alive_time,
|
||||
{ position: v3(this.node.position.x, this.node.position.y + 60) },
|
||||
{
|
||||
onComplete: () => { this.ent.destroy() },
|
||||
easing: "linear"
|
||||
}
|
||||
).start()
|
||||
```
|
||||
|
||||
## 性能优化建议
|
||||
|
||||
### 1. 对象池化
|
||||
|
||||
对于频繁使用的提示类型,可以考虑使用对象池:
|
||||
|
||||
```typescript
|
||||
class TooltipPool {
|
||||
private pool: TooltipCom[] = [];
|
||||
|
||||
public acquire(): TooltipCom {
|
||||
if (this.pool.length > 0) {
|
||||
return this.pool.pop()!;
|
||||
}
|
||||
return new TooltipCom();
|
||||
}
|
||||
|
||||
public release(tooltip: TooltipCom): void {
|
||||
// 重置状态
|
||||
tooltip.reset();
|
||||
this.pool.push(tooltip);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 2. 批量处理
|
||||
|
||||
对于连续的相同类型提示,可以考虑批量处理:
|
||||
|
||||
```typescript
|
||||
private damageQueue: DamageInfo[] = [];
|
||||
|
||||
public showDamage(damage: number, isCrit: boolean, anm: string = "atked") {
|
||||
this.damageQueue.push({
|
||||
damage,
|
||||
isCrit,
|
||||
delay: this.damageInterval,
|
||||
anm
|
||||
});
|
||||
}
|
||||
|
||||
private processDamageQueue() {
|
||||
if (this.isProcessingDamage || this.damageQueue.length === 0) return;
|
||||
|
||||
this.isProcessingDamage = true;
|
||||
const damageInfo = this.damageQueue.shift()!;
|
||||
|
||||
this.showDamageImmediate(damageInfo.damage, damageInfo.isCrit, damageInfo.anm);
|
||||
|
||||
this.scheduleOnce(() => {
|
||||
this.isProcessingDamage = false;
|
||||
}, this.damageInterval);
|
||||
}
|
||||
```
|
||||
|
||||
### 3. 条件渲染
|
||||
|
||||
对于某些不常用的提示类型,可以考虑延迟加载:
|
||||
|
||||
```typescript
|
||||
private cachedNodes: Map<number, Node> = new Map();
|
||||
|
||||
private getCachedNode(type: number): Node {
|
||||
if (!this.cachedNodes.has(type)) {
|
||||
// 延迟加载UI节点
|
||||
const node = this.createNodeForType(type);
|
||||
this.cachedNodes.set(type, node);
|
||||
}
|
||||
return this.cachedNodes.get(type)!;
|
||||
}
|
||||
```
|
||||
|
||||
### 4. 异步加载
|
||||
|
||||
对于大型UI资源,可以考虑异步加载:
|
||||
|
||||
```typescript
|
||||
async loadTooltipAsync(type: number, pos: Vec3, value: string, s_uuid: number, parent: any) {
|
||||
// 异步加载UI资源
|
||||
const prefab = await oops.res.getAsync("game/skill/buff/tooltip", Prefab);
|
||||
// 继续后续逻辑...
|
||||
}
|
||||
```
|
||||
|
||||
## 总结
|
||||
|
||||
奖励提示系统是游戏体验的重要组成部分,通过TooltipTypes常量定义的八种提示类型,系统能够有效地向玩家传达各种游戏状态和奖励信息。
|
||||
|
||||
### 关键特性
|
||||
|
||||
1. **类型化设计**:通过数值化的类型系统,实现了清晰的功能分类
|
||||
2. **灵活的UI适配**:每种类型都有专门的UI节点和显示逻辑
|
||||
3. **良好的扩展性**:新增类型只需遵循既定的配置步骤
|
||||
4. **完善的生命周期管理**:自动化的创建和销毁机制
|
||||
5. **丰富的应用场景**:覆盖了游戏中的各种奖励和状态变化
|
||||
|
||||
### 最佳实践
|
||||
|
||||
1. **合理使用类型**:根据具体场景选择合适的提示类型
|
||||
2. **注意层级管理**:确保提示不会被其他UI元素遮挡
|
||||
3. **控制显示时机**:避免过多的提示同时显示
|
||||
4. **关注性能表现**:对于高频使用的提示类型进行优化
|
||||
5. **保持一致性**:确保相似效果使用相同的提示类型
|
||||
|
||||
通过深入理解和正确使用这个奖励提示系统,开发者可以为玩家创造更加丰富和直观的游戏体验。
|
||||
195
.qoder/repowiki/zh/content/奖励系统/奖励配置/奖励配置.md
Normal file
195
.qoder/repowiki/zh/content/奖励系统/奖励配置/奖励配置.md
Normal file
@@ -0,0 +1,195 @@
|
||||
# 奖励配置
|
||||
|
||||
<cite>
|
||||
**本文档引用的文件**
|
||||
- [Mission.ts](file://assets/script/game/common/config/Mission.ts)
|
||||
- [Tasks.ts](file://assets/script/game/common/config/Tasks.ts)
|
||||
- [HeroAttrs.ts](file://assets/script/game/common/config/HeroAttrs.ts)
|
||||
- [SkillSet.ts](file://assets/script/game/common/config/SkillSet.ts)
|
||||
- [heroSet.ts](file://assets/script/game/common/config/heroSet.ts)
|
||||
- [MissionComp.ts](file://assets/script/game/map/MissionComp.ts)
|
||||
- [VictoryComp.ts](file://assets/script/game/map/VictoryComp.ts)
|
||||
- [SingletonModuleComp.ts](file://assets/script/game/common/SingletonModuleComp.ts)
|
||||
</cite>
|
||||
|
||||
## 目录
|
||||
1. [奖励系统概述](#奖励系统概述)
|
||||
2. [波次常量与奖励触发时机](#波次常量与奖励触发时机)
|
||||
3. [任务系统与奖励配置](#任务系统与奖励配置)
|
||||
4. [奖励类型的数据结构](#奖励类型的数据结构)
|
||||
5. [属性提升与技能升级奖励](#属性提升与技能升级奖励)
|
||||
6. [配置数据的加载与使用](#配置数据的加载与使用)
|
||||
7. [奖励配置的修改与扩展](#奖励配置的修改与扩展)
|
||||
|
||||
## 奖励系统概述
|
||||
|
||||
奖励系统是游戏核心机制的重要组成部分,通过配置文件定义各类奖励的参数和触发条件。系统主要由`Mission.ts`中的`FightSet`枚举和`TooltipTypes`常量、`Tasks.ts`中的任务配置以及`HeroAttrs.ts`中的属性定义共同构成。奖励系统不仅包括任务完成后的金币、经验奖励,还涵盖了战斗中属性提升、技能升级、装备获取等多种奖励类型。
|
||||
|
||||
**Section sources**
|
||||
- [Mission.ts](file://assets/script/game/common/config/Mission.ts#L1-L59)
|
||||
- [Tasks.ts](file://assets/script/game/common/config/Tasks.ts#L1-L29)
|
||||
|
||||
## 波次常量与奖励触发时机
|
||||
|
||||
波次常量定义了游戏中各种事件的触发时机,直接影响奖励的发放。`FightSet`枚举中的常量精确控制了伙伴、BOSS、装备和技能的登场波次,这些波次是奖励触发的关键节点。
|
||||
|
||||
```mermaid
|
||||
classDiagram
|
||||
class FightSet {
|
||||
+FRIEND_WAVE_UP = 3 : 伙伴登场波次
|
||||
+BOSS_WAVE_UP_1 = 3 : BOSS登场波次
|
||||
+BOSS_WAVE_UP_2 = 5 : BOSS登场波次
|
||||
+BOSS_WAVE_UP_3 = 7 : BOSS登场波次
|
||||
+EQUIP_WAVE_UP_1 = 4 : 装备登场波次
|
||||
+EQUIP_WAVE_UP_2 = 6 : 装备登场波次
|
||||
+EQUIP_WAVE_UP_3 = 8 : 装备登场波次
|
||||
+SKILL_WAVE_UP_1 = 2 : 技能登场波次
|
||||
+SKILL_WAVE_UP_2 = 5 : 技能登场波次
|
||||
+SKILL_WAVE_UP_3 = 7 : 技能登场波次
|
||||
+MON_WAVE_TIME = 10 : 怪物波次时间
|
||||
}
|
||||
```
|
||||
|
||||
**Diagram sources**
|
||||
- [Mission.ts](file://assets/script/game/common/config/Mission.ts#L1-L20)
|
||||
|
||||
**Section sources**
|
||||
- [Mission.ts](file://assets/script/game/common/config/Mission.ts#L1-L35)
|
||||
|
||||
## 任务系统与奖励配置
|
||||
|
||||
任务系统通过`Tasks.ts`文件中的`Tasks`常量定义,每个任务包含ID、名称、描述和奖励等属性。任务完成后,系统会根据配置发放相应的奖励。
|
||||
|
||||
```mermaid
|
||||
classDiagram
|
||||
class Tasks {
|
||||
+id : number
|
||||
+name : string
|
||||
+description : string
|
||||
+reward : number
|
||||
+type? : number
|
||||
}
|
||||
class Speeks {
|
||||
+randomSpeek() : string[]
|
||||
}
|
||||
```
|
||||
|
||||
**Diagram sources**
|
||||
- [Tasks.ts](file://assets/script/game/common/config/Tasks.ts#L1-L29)
|
||||
|
||||
**Section sources**
|
||||
- [Tasks.ts](file://assets/script/game/common/config/Tasks.ts#L1-L29)
|
||||
|
||||
## 奖励类型的数据结构
|
||||
|
||||
奖励系统定义了多种奖励类型,每种类型都有其特定的数据结构。`TooltipTypes`常量定义了各种奖励的类型标识,用于在UI中显示相应的奖励效果。
|
||||
|
||||
```mermaid
|
||||
classDiagram
|
||||
class TooltipTypes {
|
||||
+life = 1 : 生命值变化
|
||||
+health = 2 : 治疗效果
|
||||
+skill = 3 : 技能获得
|
||||
+crit = 4 : 暴击提示
|
||||
+uskill = 5 : 使用技能
|
||||
+lvup = 6 : 升级提示
|
||||
+apup = 7 : 攻击力提升
|
||||
+hpup = 8 : 生命值提升
|
||||
}
|
||||
```
|
||||
|
||||
**Diagram sources**
|
||||
- [Mission.ts](file://assets/script/game/common/config/Mission.ts#L50-L59)
|
||||
|
||||
**Section sources**
|
||||
- [Mission.ts](file://assets/script/game/common/config/Mission.ts#L50-L59)
|
||||
|
||||
## 属性提升与技能升级奖励
|
||||
|
||||
属性提升和技能升级奖励通过`HeroAttrs.ts`文件中的`Attrs`枚举和`AttrsType`配置表定义。系统区分数值型和百分比型属性,确保奖励计算的准确性。
|
||||
|
||||
```mermaid
|
||||
classDiagram
|
||||
class Attrs {
|
||||
+HP_MAX = 0 : 最大生命值
|
||||
+MP_MAX = 1 : 最大魔法值
|
||||
+SHIELD_MAX = 2 : 最大护盾值
|
||||
+AP = 10 : 攻击力
|
||||
+MAP = 11 : 魔法攻击力
|
||||
+CRITICAL = 30 : 暴击率
|
||||
+CRITICAL_DMG = 31 : 暴击伤害
|
||||
+GOLD_GAIN = 65 : 金币获取
|
||||
+EXP_GAIN = 64 : 经验获取
|
||||
}
|
||||
class BType {
|
||||
+VALUE = 0 : 数值型
|
||||
+RATIO = 1 : 百分比型
|
||||
}
|
||||
class AttrsType {
|
||||
+[Attrs.HP_MAX] : BType.VALUE
|
||||
+[Attrs.AP] : BType.VALUE
|
||||
+[Attrs.CRITICAL] : BType.RATIO
|
||||
+[Attrs.GOLD_GAIN] : BType.RATIO
|
||||
}
|
||||
```
|
||||
|
||||
**Diagram sources**
|
||||
- [HeroAttrs.ts](file://assets/script/game/common/config/HeroAttrs.ts#L1-L100)
|
||||
|
||||
**Section sources**
|
||||
- [HeroAttrs.ts](file://assets/script/game/common/config/HeroAttrs.ts#L1-L100)
|
||||
|
||||
## 配置数据的加载与使用
|
||||
|
||||
配置数据通过单例模式的`SingletonModuleComp`进行管理,确保数据在游戏运行时的一致性和可访问性。奖励数据在战斗结束时通过`VictoryComp`组件显示给玩家。
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant MissionComp as MissionComp
|
||||
participant SingletonModule as SingletonModuleComp
|
||||
participant VictoryComp as VictoryComp
|
||||
MissionComp->>SingletonModule : 更新游戏数据(vmdata)
|
||||
SingletonModule->>MissionComp : 返回数据更新结果
|
||||
MissionComp->>VictoryComp : 传递奖励数据和游戏数据
|
||||
VictoryComp->>Player : 显示胜利界面和奖励
|
||||
VictoryComp->>SingletonModule : 更新金币等永久数据
|
||||
SingletonModule->>VictoryComp : 返回数据更新结果
|
||||
```
|
||||
|
||||
**Diagram sources**
|
||||
- [MissionComp.ts](file://assets/script/game/map/MissionComp.ts#L1-L70)
|
||||
- [VictoryComp.ts](file://assets/script/game/map/VictoryComp.ts#L1-L74)
|
||||
- [SingletonModuleComp.ts](file://assets/script/game/common/SingletonModuleComp.ts#L1-L194)
|
||||
|
||||
**Section sources**
|
||||
- [MissionComp.ts](file://assets/script/game/map/MissionComp.ts#L1-L70)
|
||||
- [VictoryComp.ts](file://assets/script/game/map/VictoryComp.ts#L1-L74)
|
||||
- [SingletonModuleComp.ts](file://assets/script/game/common/SingletonModuleComp.ts#L1-L194)
|
||||
|
||||
## 奖励配置的修改与扩展
|
||||
|
||||
奖励配置可以通过修改相应的TS文件进行调整和扩展。开发者可以调整奖励权重、添加新的奖励配置项,或创建新的奖励类型。
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
Start([开始修改奖励配置]) --> ModifyMission["修改Mission.ts中的FightSet常量"]
|
||||
ModifyMission --> ModifyTasks["修改Tasks.ts中的任务奖励"]
|
||||
ModifyTasks --> ModifyHeroAttrs["修改HeroAttrs.ts中的属性定义"]
|
||||
ModifyHeroAttrs --> Test["测试配置变更"]
|
||||
Test --> Validate["验证奖励效果"]
|
||||
Validate --> Deploy["部署到游戏"]
|
||||
Deploy --> End([完成])
|
||||
ModifyMission --> AddNewReward["添加新的奖励类型到TooltipTypes"]
|
||||
AddNewReward --> UpdateUI["更新UI显示逻辑"]
|
||||
UpdateUI --> Test
|
||||
```
|
||||
|
||||
**Diagram sources**
|
||||
- [Mission.ts](file://assets/script/game/common/config/Mission.ts#L1-L59)
|
||||
- [Tasks.ts](file://assets/script/game/common/config/Tasks.ts#L1-L29)
|
||||
- [HeroAttrs.ts](file://assets/script/game/common/config/HeroAttrs.ts#L1-L546)
|
||||
|
||||
**Section sources**
|
||||
- [Mission.ts](file://assets/script/game/common/config/Mission.ts#L1-L59)
|
||||
- [Tasks.ts](file://assets/script/game/common/config/Tasks.ts#L1-L29)
|
||||
- [HeroAttrs.ts](file://assets/script/game/common/config/HeroAttrs.ts#L1-L546)
|
||||
343
.qoder/repowiki/zh/content/奖励系统/奖励配置/战斗奖励配置.md
Normal file
343
.qoder/repowiki/zh/content/奖励系统/奖励配置/战斗奖励配置.md
Normal file
@@ -0,0 +1,343 @@
|
||||
# 战斗奖励配置
|
||||
|
||||
<cite>
|
||||
**本文档引用文件**
|
||||
- [Mission.ts](file://assets/script/game/common/config/Mission.ts)
|
||||
- [MissionComp.ts](file://assets/script/game/map/MissionComp.ts)
|
||||
- [MissionMonComp.ts](file://assets/script/game/map/MissionMonComp.ts)
|
||||
- [RogueConfig.ts](file://assets/script/game/map/RogueConfig.ts)
|
||||
- [VictoryComp.ts](file://assets/script/game/map/VictoryComp.ts)
|
||||
- [HeroViewComp.ts](file://assets/script/game/hero/HeroViewComp.ts)
|
||||
- [TalComp.ts](file://assets/script/game/hero/TalComp.ts)
|
||||
- [GameEvent.ts](file://assets/script/game/common/config/GameEvent.ts)
|
||||
</cite>
|
||||
|
||||
## 目录
|
||||
1. [战斗奖励机制概述](#战斗奖励机制概述)
|
||||
2. [FightSet枚举常量详解](#fightset枚举常量详解)
|
||||
3. [奖励触发波次机制](#奖励触发波次机制)
|
||||
4. [奖励数值影响参数](#奖励数值影响参数)
|
||||
5. [奖励类型配置逻辑](#奖励类型配置逻辑)
|
||||
6. [配置加载与运行时访问](#配置加载与运行时访问)
|
||||
7. [常见问题排查](#常见问题排查)
|
||||
8. [代码示例](#代码示例)
|
||||
|
||||
## 战斗奖励机制概述
|
||||
|
||||
本系统基于Mission.ts文件中的FightSet枚举实现战斗奖励触发机制,通过波次常量控制奖励生成时机,结合参数配置实现多样化的奖励效果。系统通过事件驱动模式,在特定战斗阶段触发相应的奖励逻辑,包括属性提升、金币获取和技能解锁等。
|
||||
|
||||
**Section sources**
|
||||
- [Mission.ts](file://assets/script/game/common/config/Mission.ts#L0-L35)
|
||||
- [MissionComp.ts](file://assets/script/game/map/MissionComp.ts#L0-L33)
|
||||
- [GameEvent.ts](file://assets/script/game/common/config/GameEvent.ts#L0-L69)
|
||||
|
||||
## FightSet枚举常量详解
|
||||
|
||||
FightSet枚举定义了战斗中的关键配置常量,主要分为三类:波次触发常量、数值影响常量和资源类型常量。
|
||||
|
||||
### 波次触发常量
|
||||
|
||||
| 常量名称 | 数值 | 业务含义 |
|
||||
|---------|------|---------|
|
||||
| FRIEND_WAVE_UP | 3 | 伙伴登场的战斗波次 |
|
||||
| BOSS_WAVE_UP_1 | 3 | 第一波BOSS登场波次 |
|
||||
| BOSS_WAVE_UP_2 | 5 | 第二波BOSS登场波次 |
|
||||
| BOSS_WAVE_UP_3 | 7 | 第三波BOSS登场波次 |
|
||||
| EQUIP_WAVE_UP_1 | 4 | 第一波装备登场波次 |
|
||||
| EQUIP_WAVE_UP_2 | 6 | 第二波装备登场波次 |
|
||||
| EQUIP_WAVE_UP_3 | 8 | 第三波装备登场波次 |
|
||||
| SKILL_WAVE_UP_1 | 2 | 第一波技能登场波次 |
|
||||
| SKILL_WAVE_UP_2 | 5 | 第二波技能登场波次 |
|
||||
| SKILL_WAVE_UP_3 | 7 | 第三波技能登场波次 |
|
||||
|
||||
### 数值影响常量
|
||||
|
||||
| 常量名称 | 数值 | 业务含义 |
|
||||
|---------|------|---------|
|
||||
| ATK_ADD_COUNT | 4 | 伙伴攻击力增加基数 |
|
||||
| ATK_ADD_GLOD | 1 | 金币增加基数 |
|
||||
| CRIT_DAMAGE | 50 | 暴击伤害百分比 |
|
||||
| DOUBLE_ATK_RATE | 100 | 额外攻击默认概率 |
|
||||
| ATKED_TO_POWER | 15 | 被攻击涨能量值 |
|
||||
| ATK_TO_POWER | 10 | 攻击涨能量值 |
|
||||
|
||||
### 资源类型常量
|
||||
|
||||
| 常量名称 | 数值 | 业务含义 |
|
||||
|---------|------|---------|
|
||||
| GREEN_GOLD | 1 | 绿色金币类型 |
|
||||
| BLUE_GOLD | 2 | 蓝色金币类型 |
|
||||
| PURPLE_GOLD | 3 | 紫色金币类型 |
|
||||
| ORANGE_GOLD | 4 | 橙色金币类型 |
|
||||
|
||||
**Section sources**
|
||||
- [Mission.ts](file://assets/script/game/common/config/Mission.ts#L0-L35)
|
||||
|
||||
## 奖励触发波次机制
|
||||
|
||||
战斗奖励的触发与波次系统紧密关联,通过FightSet中的波次常量控制不同奖励类型的出现时机。
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant MissionComp as MissionComp
|
||||
participant MissionMonComp as MissionMonComp
|
||||
participant RogueConfig as RogueConfig
|
||||
MissionComp->>MissionMonComp : dispatchEvent(FightStart)
|
||||
MissionMonComp->>RogueConfig : getStageType(stage,level)
|
||||
RogueConfig-->>MissionMonComp : 返回关卡类型
|
||||
MissionMonComp->>RogueConfig : getStageMonsterConfigs()
|
||||
RogueConfig-->>MissionMonComp : 返回怪物配置
|
||||
MissionMonComp->>MissionMonComp : generateMonstersFromStageConfig()
|
||||
MissionMonComp->>MissionMonComp : processRandomEvent()
|
||||
alt 事件触发
|
||||
MissionMonComp->>MissionMonComp : TREASURE事件
|
||||
MissionMonComp->>MissionComp : 增加金币奖励
|
||||
end
|
||||
```
|
||||
|
||||
**Diagram sources**
|
||||
- [MissionComp.ts](file://assets/script/game/map/MissionComp.ts#L66-L116)
|
||||
- [MissionMonComp.ts](file://assets/script/game/map/MissionMonComp.ts#L102-L136)
|
||||
- [RogueConfig.ts](file://assets/script/game/map/RogueConfig.ts#L129-L168)
|
||||
|
||||
### 波次与地图系统联动
|
||||
|
||||
波次常量与地图系统通过关卡配置实现联动,具体关系如下:
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[开始战斗] --> B{判断关卡类型}
|
||||
B --> |普通关卡| C[按波次生成怪物]
|
||||
B --> |精英关卡| D[增加精英怪物]
|
||||
B --> |BOSS关卡| E[生成BOSS怪物]
|
||||
B --> |事件关卡| F[触发随机事件]
|
||||
F --> G{随机事件类型}
|
||||
G --> |宝箱事件| H[增加金币奖励]
|
||||
G --> |陷阱事件| I[对玩家造成伤害]
|
||||
G --> |增益事件| J[给予临时增益]
|
||||
G --> |减益事件| K[给予临时减益]
|
||||
```
|
||||
|
||||
**Diagram sources**
|
||||
- [RogueConfig.ts](file://assets/script/game/map/RogueConfig.ts#L86-L132)
|
||||
- [MissionMonComp.ts](file://assets/script/game/map/MissionMonComp.ts#L135-L169)
|
||||
|
||||
## 奖励数值影响参数
|
||||
|
||||
奖励数值通过FightSet中的参数进行配置,影响各种奖励效果的强度。
|
||||
|
||||
### 攻击力与金币影响机制
|
||||
|
||||
```mermaid
|
||||
classDiagram
|
||||
class FightSet {
|
||||
+FRIEND_WAVE_UP : number
|
||||
+BOSS_WAVE_UP_1 : number
|
||||
+EQUIP_WAVE_UP_1 : number
|
||||
+SKILL_WAVE_UP_1 : number
|
||||
+ATK_ADD_COUNT : number
|
||||
+ATK_ADD_GLOD : number
|
||||
+CRIT_DAMAGE : number
|
||||
}
|
||||
class HeroViewComp {
|
||||
+Attrs : number[]
|
||||
+base_ap : number
|
||||
+hp : number
|
||||
}
|
||||
class TalComp {
|
||||
+FStats : Stats
|
||||
+checkTrigger(tal) : boolean
|
||||
+doTalEffect(tal) : void
|
||||
}
|
||||
FightSet --> HeroViewComp : 影响属性计算
|
||||
FightSet --> TalComp : 影响天赋触发
|
||||
TalComp --> HeroViewComp : 修改英雄属性
|
||||
```
|
||||
|
||||
**Diagram sources**
|
||||
- [Mission.ts](file://assets/script/game/common/config/Mission.ts#L0-L35)
|
||||
- [HeroViewComp.ts](file://assets/script/game/hero/HeroViewComp.ts#L0-L22)
|
||||
- [TalComp.ts](file://assets/script/game/hero/TalComp.ts#L102-L139)
|
||||
|
||||
### 能量增长参数
|
||||
|
||||
| 参数 | 数值 | 触发条件 |
|
||||
|------|------|---------|
|
||||
| ATKED_TO_POWER | 15 | 被攻击时增长能量 |
|
||||
| ATK_TO_POWER | 10 | 攻击时增长能量 |
|
||||
| CRIT_TO_POWER | 15 | 暴击时增长能量 |
|
||||
| DODGE_TO_POWER | 15 | 闪避时增长能量 |
|
||||
|
||||
这些参数在英雄战斗过程中实时影响能量值的增长,进而影响技能释放频率。
|
||||
|
||||
**Section sources**
|
||||
- [Mission.ts](file://assets/script/game/common/config/Mission.ts#L0-L35)
|
||||
- [HeroViewComp.ts](file://assets/script/game/hero/HeroViewComp.ts#L582-L622)
|
||||
|
||||
## 奖励类型配置逻辑
|
||||
|
||||
系统实现了多种奖励类型,每种类型都有特定的配置逻辑和触发条件。
|
||||
|
||||
### 属性提升奖励
|
||||
|
||||
属性提升通过天赋系统实现,当满足特定条件时触发:
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
A[战斗开始] --> B{检查天赋触发条件}
|
||||
B --> |等级提升| C[触发LEVEL_UP天赋]
|
||||
B --> |行动次数| D[触发ACTION_COUNT天赋]
|
||||
B --> |技能使用| E[触发SKILL_COUNT天赋]
|
||||
B --> |受到伤害| F[触发DAMAGE_COUNT天赋]
|
||||
C --> G[执行天赋效果]
|
||||
D --> G
|
||||
E --> G
|
||||
F --> G
|
||||
G --> H[属性提升]
|
||||
```
|
||||
|
||||
**Diagram sources**
|
||||
- [TalComp.ts](file://assets/script/game/hero/TalComp.ts#L134-L169)
|
||||
- [HeroViewComp.ts](file://assets/script/game/hero/HeroViewComp.ts#L281-L316)
|
||||
|
||||
### 金币获取奖励
|
||||
|
||||
金币获取主要通过两种方式实现:
|
||||
|
||||
1. **战斗掉落**:怪物死亡时随机掉落金币
|
||||
2. **事件奖励**:事件关卡触发宝箱事件获得固定金币
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant Mon as Monster
|
||||
participant MissionComp as MissionComp
|
||||
participant TopComp as TopComp
|
||||
Mon->>MissionComp : dispatchEvent(MonDead)
|
||||
MissionComp->>MissionComp : do_mon_dead()
|
||||
MissionComp->>MissionComp : 增加金币
|
||||
MissionComp->>TopComp : dispatchEvent(GOLD_UPDATE)
|
||||
TopComp->>TopComp : 更新金币UI显示
|
||||
```
|
||||
|
||||
**Diagram sources**
|
||||
- [MissionComp.ts](file://assets/script/game/map/MissionComp.ts#L32-L70)
|
||||
- [TopComp.ts](file://assets/script/game/map/TopComp.ts#L0-L28)
|
||||
|
||||
### 技能解锁奖励
|
||||
|
||||
技能解锁通过技能波次常量控制,在特定波次解锁新技能:
|
||||
|
||||
- SKILL_WAVE_UP_1=2:第二波解锁第一个技能
|
||||
- SKILL_WAVE_UP_2=5:第五波解锁第二个技能
|
||||
- SKILL_WAVE_UP_3=7:第七波解锁第三个技能
|
||||
|
||||
**Section sources**
|
||||
- [Mission.ts](file://assets/script/game/common/config/Mission.ts#L0-L35)
|
||||
- [TalComp.ts](file://assets/script/game/hero/TalComp.ts#L102-L139)
|
||||
|
||||
## 配置加载与运行时访问
|
||||
|
||||
系统通过模块化方式加载和访问配置数据,确保配置的可维护性和可扩展性。
|
||||
|
||||
### 配置加载流程
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[游戏启动] --> B[加载Mission.ts配置]
|
||||
B --> C[初始化FightSet常量]
|
||||
C --> D[加载地图配置]
|
||||
D --> E[初始化关卡数据]
|
||||
E --> F[战斗开始]
|
||||
F --> G[运行时访问配置]
|
||||
G --> H[根据波次触发奖励]
|
||||
```
|
||||
|
||||
### 运行时访问路径
|
||||
|
||||
配置数据在运行时通过以下路径访问:
|
||||
|
||||
- FightSet常量:`import { FightSet } from "../common/config/Mission"`
|
||||
- 关卡配置:`import { getStageMonsterConfigs } from "./RogueConfig"`
|
||||
- 事件配置:`import { getRandomEvent } from "./RogueConfig"`
|
||||
|
||||
**Section sources**
|
||||
- [MissionComp.ts](file://assets/script/game/map/MissionComp.ts#L0-L33)
|
||||
- [RogueConfig.ts](file://assets/script/game/map/RogueConfig.ts#L246-L281)
|
||||
|
||||
## 常见问题排查
|
||||
|
||||
### 奖励未触发的可能原因
|
||||
|
||||
1. **波次配置错误**
|
||||
- 检查FightSet中波次常量设置是否正确
|
||||
- 确认波次值与实际战斗进度匹配
|
||||
|
||||
2. **事件监听缺失**
|
||||
- 确保MissionComp正确监听FightStart事件
|
||||
- 检查事件派发是否正常
|
||||
|
||||
3. **配置加载失败**
|
||||
- 验证Mission.ts文件是否正确导入
|
||||
- 检查路径引用是否正确
|
||||
|
||||
4. **条件未满足**
|
||||
- 天赋触发条件未达到
|
||||
- 关卡类型不符合奖励条件
|
||||
|
||||
### 调试方法
|
||||
|
||||
1. **日志输出**
|
||||
- 在关键节点添加console.log输出
|
||||
- 监控波次变化和事件触发
|
||||
|
||||
2. **断点调试**
|
||||
- 在MissionMonComp的do_mon_wave方法设置断点
|
||||
- 检查怪物生成和事件处理逻辑
|
||||
|
||||
3. **配置验证**
|
||||
- 确认FightSet常量值在合理范围内
|
||||
- 验证关卡配置与波次设置的匹配性
|
||||
|
||||
**Section sources**
|
||||
- [MissionMonComp.ts](file://assets/script/game/map/MissionMonComp.ts#L69-L105)
|
||||
- [MissionComp.ts](file://assets/script/game/map/MissionComp.ts#L114-L150)
|
||||
|
||||
## 代码示例
|
||||
|
||||
### 调整奖励触发波次
|
||||
|
||||
```typescript
|
||||
// 修改技能登场波次
|
||||
export enum FightSet {
|
||||
SKILL_WAVE_UP_1 = 1, // 提前到第一波
|
||||
SKILL_WAVE_UP_2 = 4, // 提前到第四波
|
||||
SKILL_WAVE_UP_3 = 6, // 提前到第六波
|
||||
// 其他配置...
|
||||
}
|
||||
```
|
||||
|
||||
### 修改奖励数值
|
||||
|
||||
```typescript
|
||||
// 增加金币奖励数值
|
||||
export enum FightSet {
|
||||
ATK_ADD_GLOD = 2, // 金币增加从1提升到2
|
||||
CRIT_DAMAGE = 75, // 暴击伤害从50%提升到75%
|
||||
// 其他配置...
|
||||
}
|
||||
```
|
||||
|
||||
### 添加新的奖励类型
|
||||
|
||||
```typescript
|
||||
// 在Mission.ts中添加新的奖励常量
|
||||
export enum FightSet {
|
||||
NEW_REWARD_TYPE = 5, // 新的奖励类型
|
||||
REWARD_VALUE = 100, // 奖励数值
|
||||
// 其他配置...
|
||||
}
|
||||
```
|
||||
|
||||
**Section sources**
|
||||
- [Mission.ts](file://assets/script/game/common/config/Mission.ts#L0-L35)
|
||||
- [VictoryComp.ts](file://assets/script/game/map/VictoryComp.ts#L0-L74)
|
||||
Reference in New Issue
Block a user