• 关于Unity 中对UGUI制作任务系统的编程


    版权声明:

    • 本文原创发布于博客园"优梦创客"的博客空间(网址: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上


    更多知识、教程、源码请进↓↓↓
    优梦创客工坊

    精品内容推送请搜索↓↓↓
    微信公众号:优梦创客

    免费直播、VIP视频请进↓↓↓
    优梦创客课堂

    游戏开发交流群↓↓↓
    游戏开发交流群

  • 相关阅读:
    内存页面的各种属性(就是Read, Write, Execute的组合)
    分配粒度和内存页面大小(x86处理器平台的分配粒度是64K,内存页是4K,所以section都是0x1000对齐,硬盘扇区大小是512字节,所以PE文件默认文件对齐是0x200)
    NULL指针区域(NULL定义为0-65535之间的任何数都可以)
    Tiny Mapper是一个.net平台开源的对象映射组件
    表达式树动态拼接lambda
    VSC调试.NET Core 应用程序
    领域驱动设计之单元测试最佳实践
    web框架python
    无需安装Mono的Jexus
    分布式发布订阅消息系统Kafka
  • 原文地址:https://www.cnblogs.com/raymondking123/p/11306826.html
Copyright © 2020-2023  润新知