关于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上


关于Unity 中对UGUI制作任务系统的编程的更多相关文章
- 关于Unity中的UGUI优化,你可能遇到这些问题
		https://blog.uwa4d.com/archives/QA_UGUI-1.html 关于Unity中的UGUI优化,你可能遇到这些问题 作者:admin / 时间:2016年11月08日 / ... 
- 在Unity中使用UGUI修改Mesh绘制几何图形
		在商店看到这样一个例子,表示很有兴趣,他们说是用UGUI做的.我想,像这种可以随便变形的图形,我第一个就想到了网格变形. 做法1: 细心的朋友应该会发现,每个UGUI可见元素,都有一个‘Canvas ... 
- unity中的动画制作方法
		Unity中的动画制作方法 1.DOTween DoTween在5.0版本中已经用到了,到官网下载好插件之后,然后通过在项目中导入头using DG.Tweening;即可. 一些常用的API函数 D ... 
- unity中的UGUI一些组件的使用
		一.Toggle Group(Script) LeftButtons上添加Toggle Group组件,属性Allow Switch Off打对勾,代表它的所有子物体上带有Toggle组件的属性Is ... 
- 关于Unity中使用刚体制作简单跑酷案例
		一.步骤 1.创建一个Canvas 2.对Canvas进行初始化,记得把Game视图的分辨率调成和Canvas里面设置的一样的分辨率960X640 3.创建一个Image的UI节点作为Canvas的子 ... 
- Unity仪表盘显示UGUI制作小心得
		最近在做设备仪表参数参数显示,由于模型摆放位置经常修改,加之要求不能在模型的下面添加东西,显示界面的位置也不得不跟着修改,一来二去就烦了,想了解决办法,现在总结如下: 1.仍然在模型下面新建Panel ... 
- unity 中的UGUI 屏蔽鼠标穿透
		void Update() { if(IsTouchedUI()) { Debug.Log("当前触摸在UI上"); } else { Debug.Log("当前没有触摸 ... 
- unity  中UGUI制作滚动条视图效果(按钮)
		1.在unity中创建一个Image作为滚动条视图的背景: 2.在Image下创建一个空物体,在空物体下创建unity自带的Scroll View组件: 3.对滑动条视图的子物体进行调整: 4.添加滚 ... 
- Unity中2D和UGUI图集的理解与使用
		图集 什么是图集? 在使用3D技术开发2D游戏或制作UI时(即使用GPU绘制),都会使用到图集,而使用CPU渲染的2D游戏和UI则不存在图集这个概念(比如Flash的原生显示列表),那么什么是图集呢? ... 
随机推荐
- 跟我学SpringCloud | 第九篇:服务网关Zuul初
			SpringCloud系列教程 | 第九篇:服务网关Zuul初探 前面的文章我们介绍了,Eureka用于服务的注册于发现,Feign支持服务的调用以及均衡负载,Hystrix处理服务的熔断防止故障扩散 ... 
- POJ 1743:Musical Theme(后缀数组+二分)
			题目链接 题意 有N个音符的序列来表示一首乐曲,每个音符都是1到88范围内的整数,现在要找一个重复的主题."主题"是整个音符序列的一个子串,它需要满足如下条件: 长度至少为5个音符 ... 
- mysql重复数据下,删除一条重复数据
			delete from information where id in (select id from (select max(id) as id,count(*) as ccc from infor ... 
- Jmeter实时监控+SpringBoot接口性能实战
			性能测试 Jmeter实时监控+SpringBoot接口性能实战 自动化 SpringBoot Java Jmeter实时监控+SpringBoot接口性能实战 一.实验目的及实验环境 1.1.实验目 ... 
- 006.SQLServer AlwaysOn可用性组高可用部署
			一 数据库镜像部署准备 1.1 数据库镜像支持 有关对 SQL Server 2012 中的数据库镜像的支持的信息,请参考:https://docs.microsoft.com/zh-cn/previ ... 
- Mac上Ultra Edit的激活
			2016-11-20 增加16.10.0.22破解 去官网下载原载,先运行一次,再在终端里执行下面代码就可以破解完成!printf '\x31\xC0\xFF\xC0\xC3\x90' | dd se ... 
- .NET Core CSharp初级篇 1-1
			.NET Core CSharp初级篇 1-1 本节内容是对于C#基础类型的存储方式以及C#基础类型的理论介绍 基础数据类型介绍 例如以下这句话:"张三是一名程序员,今年15岁重50.3kg ... 
- 从后端到前端之Vue(二)写个tab试试水
			上一篇写了一下table,然后要写什么呢?当然是tab了.动态创建一个tab,里面放一个table,这样一个后台管理的基本功能(之一)就出来了. 好吧,这里其实只是试试水,感受一下vue的数据驱动可以 ... 
- STM32F072从零配置工程-基于HAL库的串口UART中断配置
			先上一个采用串口直接传输的Demo: 此处的思路是完全采用HAL库来实现的,核心是运用HAL_UART_Transmit_IT和HAL_UART_Receive_IT两个函数来实现的,可以作为一个De ... 
- centos7 linux下增加swap虚拟内存分区大小
			此方法不限于centos,linux均适用 最近在服务器上部署了一个java项目,java进程经常性莫名被自动Kill,首先java程序是没有报错的,那么我想可能是内存不足的原因,因为4G内存的服务上 ... 
 
			
		
