UIButton
按钮能接受单击并触发响应事件同时还可以触发多个响应事件等等,当然按钮还有其他很多种状态。
我们创建按钮的方式 (1)创建一个Sprite,然后这个就是我们的按钮的外观了 (2)然后在NGUI菜单中,选择Attach,然后选择Collider (3)同样的,继续选择Attach,然后选择ButtonScript
这样我们就创建好一个我们最基本的按钮啦,当然这个按钮不一定非要是sprite才能触发按钮事件,也可以是标签Label,或者UITextrure等也可以触发,不过sprite更为常见
核心组件BoxCollider BoxCollider是一个物理组件,其实也就是一个物理的碰撞盒子,所有的需要接入外部输入事件的UI,都需要一个BoxCollider,这个BoxCollider代表的是响应事件的范围,如果没有BoxCollider,那么这个控件是无论如何都无法接收到外部事件的。所以说BoxCollider就是代表接受事件的响应范围,如果我们将BoxCollider设置为全屏幕,那么单击屏幕任何一个地方都能触发这个按钮。  (1)Is Trigger 是否打开触发器,这个设置对于NGUi没什么用,它打开的作用是可以通过物理碰撞触发事件(如相撞爆炸等) (2)Material 材质设定,NGUI一般不适用 (3)Center 中心偏移位置,这个需要注意一下,这个位置也决定了我们可以点击的位置 (4)Size 尺寸设置,这个是最重要和常用的设置,用来和Center来配合控制可以点击的区域
核心组件UIButton 其实我们不用UIButton也可以使用脚本中的OnClick(),OnHover()等事件监听函数去触发一个响应事件,那我们为什么还要使用UIButton呢? (1)这个UIButton脚本可以设置不同状态的颜色,比如普通状态、单击状态、鼠标光标悬停状态、禁用状态,可以有不同的颜色来表示 (2)可以设置不同状态下的图片,这个就是之前的ImageButton,比如我们希望图片A在鼠标悬停上去的时候变为图标B (3)可以很方便的来添加按钮的点击事件
接下来我们就来看看我们的面板
(1)TweenTarget,动画目标,按钮在光标悬停时变色,被单击时变换图片等,都是动画。大多数情况下都设置为自己 (2)DragOver,拖动结束事件,默认为do nothing.这里有两个选项:Do Nothing和Press,这个选项是因为按钮在拖动的,有一个事件的交叉,如果我们拖动一个按钮,那么不仅仅拖动了它,同时也按下了它这个设置的目的就是它被拖动后,是否还执行按下事件 (3)Transition,过渡时间,这里是动画过渡的时间,例如,我们设定按钮在鼠标滑过时,要变黑,这个设置就是设置它在光标滑过时由正常到变黑的时间 (4)Colors模块,这个就是设置不同状态下按钮的颜色,这里分别是四种模块,普通状态,按钮被鼠标光标滑过时的状态,按钮被按下的状态,按钮不可点击时状态(BoxCollider被禁用的时候) (5)Sprites模块,这个就是精灵设置模块,这个必须要这个按钮制作的时候使用的是一个精灵控件做为基础的,否则就不会有这个模块了,这个模块是设置不同状态下精灵的变化。PixelSnap是指保持原像素尺寸,当我们设置了不同状态下显示不同的sprite的时候,只有勾选了这个选项,才会让显示的不同的Sprite都以原像素显示,否则都以默认的sprite的大小一致。 (6)OnClick,这个就是设置按钮响应点击事件的地方,我们设置按钮响应事件可以在这个地方进行,我们只需要把响应事件函数的脚本物体拖入到Notify中,然后就对应的出现这二个物体下脚本中的所有public函数,然后我们选择需要响应的函数即可,非常的方便,同时可以响应多个函数。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NGUIButtonClick : MonoBehaviour {
public GameObject newRecord;
public GameObject btn;
public void showNewRecord() {
newRecord.SetActive (!newRecord.activeSelf);
}
}
给按钮添加动画
大家看到一般的手机游戏的话,按钮都会有一个缩放动画(例如突然变大蹦一下),我们可以单击AddCompent,选择NGUI,选择Interaction,在里面找到ButtonScale脚本,附加到按钮物体上,ButtonScale的核心作用就是控制按钮的放缩动画,我们来了解一下它的设置
NGUI里面,任何事物都可以变成按钮,不仅仅是UI。
我们利用按钮的原理,可以将任何事物变成一个按钮,我们接下来就来实验一下如何把我们的模型做成我们的按钮,就像大家上图看到的一样,我们如何让一个3D模型成为一个可以点击的对象,响应我们的鼠标点击事件。
1.首先我们来创建一个Cube,然后加一个灯光让我们看的更加清楚 2.让摄像机可以监听到我们的鼠标事件,我们之前说过了,只有带有UICamera组件的摄像机照射到的物体,才可以接受到事件响应,我们可以看到这个Cube是由场景中的MainCamera渲染出来的,我们先为MainCamera附件一个UICamera组件。 3.为Cube附件按钮的关键组件BoxCollider,选择cube,首先附加一个BoxCollider,注意一下这个Cube并不是一个UI图片,所以一定要设置Z轴的尺寸。 4.为我们的Cube附件一个UIButton,附加方法可以通过Unity顶部菜单的NGUI菜单去Attach,也可以通过AddCompent.制作好之后我们发现这个Cube并没有Sprites模块,我们说过,只有以Sprite制作出来的按钮才会有这个Sprite模块。
到此为止,我们的Cube就变成一个3D模型的按钮了。同样运用到实际的模型即可了