版权声明:
- 本文原创发布于博客园"优梦创客"的博客空间(网址:
http://www.cnblogs.com/raymondking123/
)以及微信公众号"优梦创客" - 您可以自由转载,但必须加入完整的版权声明!
效果展示:
基本的界面
1:先看一下两个用来管理数据的脚本
这个TaskMgr脚本是定义了任务的最基本的两个属性,然后将任务做成一个列表,然后再往这个列表里添加数据(也就是任务的类型typeid),但是他只有任务的类型,没有具体的任务信息,具体的任务信息写在另一个数据脚本里边,然后这个脚本另一个作用就是加载预制体,设置他的位置,他是第几个任务以及什么类型,还有一句话没有截到,这句话的作用就是从列表里边把任务拿出来,通过索引的方式
这个MyTaskInfo数据脚本就是定义了不同任务的具体信息,先定义一个父类的任务,然后子类继承改写虚函数方法,然后这个人物的具体信息是存在字典里边,可以通过id来找到他其它的信息(字典的存储方式是存的键值对)
这是继承父类的一个子类
2:然后说一下界面上每个按钮的功能是怎么实现的
(1)任务列表,这个按钮在按下的时候(onclick())会调用任务列表界面上挂的脚本
本来可以设置onclick时的gameobject的setactive,结果一开始还不是很熟悉,就用了代码来实现,通过一个bool变量控制开关,不过后来改了一下,发现setactive不是很灵敏有时候会点不出来。
(2)接受按钮 这个按钮是经过了两次判断的,第一次是判断你是不是已完成,如果是已完成,那这个按钮就会将这个任务的信息从已接任务转移到已完成任务(改变他的父节点),然后再将这个按钮设置成不能再点击;如果不是已完成(接受),那就往我的任务背包里边添加任务信息,此时在进行第二次判断,如果任务的等级大于你自身的等级,那么任务就接受不了,会在任务背包里显示接受不了任务,接受按钮也不会改变,如果自己的等级等于或者大于任务的等级,那么任务就是可以接受的,在自己的任务背包里会显示任务的具体内容,然后接受按钮也会变成已领取
(3)删除按钮 这个就比较简单,直接删除掉这个gameobject(接受,删除这两个按钮都是通过onclick来实现挂在预制体生成的任务上面的,所以删除的时候直接删掉这个gameobject就可以了)
(4)我的任务 这个按钮功能的实现和任务列表的实现是一样的
(5)已接任务和以完成任务我是设置的toggle进行切换
(6)提升一级 这个实现的脚本呢是挂在LVL这个text上的,就是将等级加一然后存下来(用于和人物等级进行比较)然后显示到屏幕上
3:最后说一下这个tasktip 这个我是在任务预制体上的那个脚本里用的两个接口 IPointerEnterHandler ,IPointerExitHandler当鼠标放到这个任务上的时候就会调用挂在tasktip上的show函数(把tasktip上的脚本写成了单例),这个show函数的作用第一个是将setactive设置为true;第二个是通过传进来的id找到这个任务的类型以及其他的基本信息,然后再将这个任务的具体信息写到tasktip上