# 任务奖励配置 **本文档中引用的文件** - [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) ## 目录 1. [简介](#简介) 2. [项目结构](#项目结构) 3. [核心组件](#核心组件) 4. [架构概览](#架构概览) 5. [详细组件分析](#详细组件分析) 6. [依赖关系分析](#依赖关系分析) 7. [性能考虑](#性能考虑) 8. [故障排除指南](#故障排除指南) 9. [结论](#结论) ## 简介 本文档全面解析了《英雄传说》游戏中基于Tasks.ts文件的任务奖励配置系统。该系统负责管理游戏中的各种任务类型,包括新手指引任务和每日任务,并实现了完整的奖励发放机制。系统采用模块化设计,支持任务配置的动态加载、运行时查询和奖励数据的实时更新。 ## 项目结构 任务奖励配置系统在项目中的组织结构如下: ```mermaid graph TB subgraph "配置层" Tasks[Tasks.ts
任务配置常量] GameEvent[GameEvent.ts
游戏事件定义] Guide[Guide.ts
引导系统] end subgraph "数据管理层" SingletonModule[SingletonModuleComp.ts
单例模块管理] Initialize[Initialize.ts
初始化系统] end subgraph "业务逻辑层" MissionComp[MissionComp.ts
任务控制组件] VictoryComp[VictoryComp.ts
胜利界面组件] MissionHeroComp[MissionHeroComp.ts
英雄任务组件] end subgraph "UI展示层" MInfoComp[MInfoComp.ts
任务信息组件] MapViewComp[MapViewComp.ts
地图视图组件] 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. **社交功能**:支持任务分享和好友竞争功能 该系统为游戏提供了坚实的任务管理基础,能够有效支撑游戏的核心玩法和用户粘性。