游戏任务系统实现思路


一、需求介绍

1、首先任务的类型不同,可以分为:日常任务、成长任务、活动任务等等。
2、当达到任务目标时,自动发放任务奖励。
3、任务需要后台可配置,例如:任务名称、完成条件、奖励内容等等。

二、数据库设计

1、任务表

字段名称注释
task_id任务id
type任务类型(日常、成长、活动等)
task_describe任务描述
reward_describe奖励描述
unlock_rule解锁条件
finish_rule完成条件
reward_rule完成奖励
number每日可完成次数
start_time任务开始时间
end_time任务结束时间

2、解锁条件配置表

字段名称注释
unlock_id解锁条件id
describe解锁条件描述
unlock_rule解锁条件规则

在unlock表中,我们配置一些任务解锁的条件:

INSERT INTO `sys_task_unlock_config` (`unlock_id `, `describe`, `unlock_rule `) VALUES (11000, '邀请%d个好友', 'type=11000&num=%d');
INSERT INTO `sys_task_unlock_config` (`unlock_id `, `describe`, `unlock_rule `) VALUES (12101, '累计拿到%d次SSS成绩', 'type=12101&num=%d');

比如:累计拿到3次SSS成绩的解锁条件为累计拿到1次SSS成绩,那么在任务表中,unlock_rule 解锁条件配置为 type=12101&num=1

3、完成条件配置表

字段名称注释
finish_id完成条件id
describe完成条件描述
finish_rule完成条件规则

与解锁表相同,我们插入两条演示数据:

INSERT INTO `sys_task_finish_config` (`finish_id`, `describe`, `finish_rule `) VALUES (21000, '邀请%d个好友', 'type=21000&num=%d');
INSERT INTO `sys_task_finish_config` (`finish_id`, `describe`, `finish_rule `) VALUES (22101, '累计拿到%d次SSS成绩', 'type=22101&num=%d');

那么拿到3次SSS成绩的完成配置:type=22101&num=3

4、奖励条件配置表

字段名称注释
reward_id奖励条件id
describe奖励条件描述
reward_rule奖励条件规则

同上,插入两条演示数据:

INSERT INTO `sys_task_rewaed_config` (`reward_id`, `describe`, `reward_rule `) VALUES (31000, '奖励%d个宝石', 'type=31000&num=%d');

那么,奖励条件配置为:type=31000&num=3,即为完成任务奖励3个宝石

5、个人任务表

字段名称注释
task_record_id任务记录id
user_id用户id
task_id任务id
type任务类型
status任务完成情况
completed_times已完成次数
number每日可完成次数

3、代码部分实现

首先需要监听游戏中发生的各种事件,比如:在线10分钟、杀死一个野怪等等。这些时间会触发我们的任务。
在触发任务后,需要统计角色的信息,然后用这些信息去遍历任务表,看看哪些任务可以解锁,将其添加至个人任务表。
随后遍历个人任务,查看哪些符合完成条件,对符合条件的发放奖励。

大致流程:

在这里插入图片描述
另外,我们在创建角色时,需要将一些没有解锁条件的任务添加至数据库。
我们在添加有时间期限的任务时,需要添加定时任务,在活动到期时将任务从个人任务表删除。

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Unity中实现任务系统的方式有很多,这里提供一种可供参考的思路: 1. 定义任务类 首先需要定义一个Task类,包括任务名称、任务描述、任务奖励等属性,同时还需要定义任务状态,如“未开始”、“进行中”、“已完成”等。可以通过枚举类型或常量来表示任务状态。 2. 创建任务管理器 可以创建一个TaskManager类,用于管理所有任务。TaskManager可以包含任务的列表、任务的增删改查等方法,同时也可以提供任务的排序、筛选等功能。 3. 显示任务UI 可以在游戏中创建一个任务UI界面,用于显示当前所有任务的状态。可以使用Unity的UI组件来实现,如Text、Image、Button等。需要根据任务状态来动态更新UI界面。 4. 触发任务的条件 任务的触发条件可以很多,如对话NPC、完成某个场景、击败某个BOSS等。可以在相应的场景或事件中添加任务触发的代码,在满足条件时触发任务。 5. 更新任务进度 在任务进行中,需要实时更新任务进度。可以在相应的场景或事件中添加任务进度更新的代码,如收集物品、完成任务要求等。 6. 完成任务任务进度达到要求时,需要将任务状态更新为“已完成”。可以在相应的场景或事件中添加任务完成的代码,同时也需要更新UI界面和给予任务奖励。 以上是一种较为简单的任务系统实现方式,可以根据实际需求进行扩展和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李子木、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值