代码已上传至github:
https://github.com/pinzeweifen/demo/tree/master/Unity/Frame
作为一个Unity的用户,接触这编辑器已经很久了,写的代码一般都是拖拖拖。
也萌生过写个架构,但是都失败了。至于原因可能是我知识量不足?
作为只萌新,今日来写写任务系统。
首先我想知道的是任务到底有哪些类型,然后我找到了这边文章,我觉得他归类得很好,所以直接用他的了
https://necromanov.wordpress.com/2010/11/23/quest_design_2/
先把底层写了,我应该有一个抽象的任务类,它将会记录任务的状态
在我的设计中,所有任务都会在游戏开始的时候就创建完毕,将会有一个管理类来管理到底哪个任务接受哪个任务完成和放弃。所以我用了一个词典来保存所有的任务。
任务管理器全局当然只会有一个,你可以添加单例模式。如果添加的任务ID 重复了就返回true。如果要在返回true后执行代码,只需要这样
假设返回检测的是false ,你将会多执行一次取反操作。
我应该可以查询到某个任务是否可接
由于我想使用类代替运算符操作方便数据转换为对应代码。所以封装了四个运算符
不相等就只是取反而已,它使用起来就像下面这样
调用管理器接受任务之后,将会调用Task的Start
它首先检查的是否可接受任务,如果可以就改变为正在进行任务的状态,并且通知开始任务,为啥要通知呢,毕竟我不可能在这里写上调用UI 的代码(#^.^#)
如果任务已经完成那么就需要提交任务
检查完状态后,判断是否可以领取奖励,领取完成更改状态并通知任务结束
还有放弃任务,没什么好说了,自己领会
当然啦还有就是任务更新
至此抽象的任务类就完成了?,不!你可以添加一些字段令子类不那么苦逼
实现一个具体的任务类型,【击杀任务类】
击杀嘛当然是杀死某单位的时候更新任务状态,在开始任务的时候监听死亡事件
在更新前判断一下条件是否为真
更新一下杀怪的数量,如果已经杀够就改变状态
在领取奖励或放弃任务时,删除事件监听
当然这个类其实还没写完,需要你自己补充完整。其他类型任务应该很好写,就讲到这里啦
领取专属 10元无门槛券
私享最新 技术干货