101 lines
2.9 KiB
Markdown
101 lines
2.9 KiB
Markdown
# 任务系统使用说明
|
||
|
||
## 概述
|
||
|
||
任务系统为玩家提供游戏目标和奖励机制。系统每天为玩家分配一个随机任务,玩家完成任务后可获得奖励。
|
||
|
||
## 系统架构
|
||
|
||
任务系统由以下几个核心组件构成:
|
||
|
||
1. **TaskData**: 任务配置数据结构
|
||
2. **TaskManager**: 任务管理器,负责任务逻辑处理
|
||
3. **GameClientTaskIntegration**: 游戏客户端集成组件
|
||
4. **API接口**: 与服务器通信的接口
|
||
|
||
## 功能特性
|
||
|
||
### 1. 任务分配
|
||
- 每日0点为每个玩家随机分配一个任务
|
||
- 玩家最多同时持有5个任务
|
||
- 任务过期时间为24小时
|
||
|
||
### 2. 任务类型
|
||
系统支持以下6种任务类型:
|
||
1. 登录任务
|
||
2. 对战任务
|
||
3. 胜利任务
|
||
4. 击败特定阵营英雄任务
|
||
5. 召唤特定阵营英雄任务
|
||
6. 使用特定阵营英雄技能任务
|
||
|
||
### 3. 任务状态
|
||
任务具有以下4种状态:
|
||
1. **Active**: 激活状态,玩家正在进行中
|
||
2. **Completed**: 完成状态,条件已满足但奖励未领取
|
||
3. **Expired**: 过期状态,任务已超时
|
||
4. **Claimed**: 已领取,奖励已发放
|
||
|
||
### 4. 奖励机制
|
||
当前版本仅支持金币奖励,未来可扩展支持:
|
||
- 卡牌包
|
||
- 稀有卡牌
|
||
- 经验值
|
||
- 其他游戏内物品
|
||
|
||
## 集成指南
|
||
|
||
### 1. 客户端集成
|
||
在游戏客户端中,通过以下方式集成任务系统:
|
||
|
||
```csharp
|
||
// 在游戏启动时初始化任务系统
|
||
TaskManager taskManager = TaskManager.Instance;
|
||
taskManager.OnPlayerLogin(); // 玩家登录时检查任务
|
||
|
||
// 在游戏过程中自动追踪任务进度
|
||
// 系统会自动监听游戏事件并更新任务进度
|
||
```
|
||
|
||
### 2. 服务器集成
|
||
服务器需要提供以下API接口:
|
||
|
||
1. `GET /tasks` - 获取所有任务配置
|
||
2. `GET /users/{userId}/tasks` - 获取玩家任务数据
|
||
3. `POST /users/{userId}/tasks` - 保存玩家任务数据
|
||
|
||
## 扩展开发
|
||
|
||
### 添加新的任务类型
|
||
1. 在`TaskConditionType`枚举中添加新的任务类型
|
||
2. 在`TaskManager.UpdateTaskProgress`方法中添加相应的条件判断
|
||
3. 在服务器端添加对应的任务处理逻辑
|
||
|
||
### 添加新的奖励类型
|
||
1. 在`TaskRewardType`枚举中添加新的奖励类型
|
||
2. 在`TaskManager.GiveReward`方法中添加奖励发放逻辑
|
||
3. 在服务器端添加对应的奖励处理逻辑
|
||
|
||
## 最佳实践
|
||
|
||
### 性能优化
|
||
1. 使用本地缓存减少API调用频率
|
||
2. 对任务数据进行批处理更新
|
||
3. 实现合理的错误重试机制
|
||
|
||
### 用户体验
|
||
1. 及时通知玩家任务完成状态
|
||
2. 提供清晰的任务进度显示
|
||
3. 确保奖励发放的可靠性
|
||
|
||
## 故障排除
|
||
|
||
### 常见问题
|
||
1. **任务无法加载**: 检查网络连接和API接口状态
|
||
2. **任务进度不更新**: 检查事件监听是否正常注册
|
||
3. **奖励未发放**: 检查奖励发放逻辑和用户数据同步
|
||
|
||
### 调试建议
|
||
1. 使用日志输出追踪任务状态变化
|
||
2. 验证API响应数据的正确性
|
||
3. 检查时间戳和过期逻辑 |