使用向导创建按钮NGUI从入门到实战大学霸

使用向导创建按钮NGUI从入门到实战大学霸

300

2.4  按钮使用向导创建按钮NGUI从入门到实战大学霸

按钮(Button)在软件中十分常见,相信读者也十分熟悉。本节就来说明在Unity中,使用NGUI创建及使用Button的方法。

2.4.1  使用向导创建按钮使用向导创建按钮NGUI从入门到实战大学霸

创建按钮的具体操作步骤如下:

(1)在Hierarchy视图里的Panel对象下,新建一个空对象,并命名为Buttons。

提示:这个名为Buttons的空对象将作为游戏场景中其它按钮的父对象,这么做是为了统一管理。

(2)打开UI控件创建向导,并设置其下列属性,如图2-40所示。

q  Templete:Button;

q  Background:Button;

q  Add to:Buttons;

(3)返回到Hierarchy视图,查看使用向导创建的按钮,读者会发现按钮对象是由两个其它对象Background和Label组成的,如图2-41所示。

图2-40  使用向导创建按钮             图2-41  位于Buttons空对象下,新创建的按钮

提示:从效果上看来,按钮其实就是拥有特殊Sprite做背景的Label。

(4)新创建的按钮,此时就位于游戏背景的中央。当读者运行游戏的时候,会发现有按钮从鼠标上经过以及点击按钮的时候,按钮的状态会有所不同,如图2-42所示。

图2-42  直接运行游戏,新创建的按钮已经可以检测鼠标“盘旋”与“点击”事件

(5)新创建的按钮之所以能检测到鼠标“盘旋”和“点击”事件的原因,就在Button对象上。选中新创建的按钮,在Inspector视图里除了可以看到Transform组件以外,还能看到其它3个组件:Box Collider、UIButton(Script)和UIPlay Sound(Script)。

(6)Box Collider组件在Scene视图中以绿色的线框显示。按钮使用它来检测鼠标“盘旋”和“点击”事件,如图2-43所示。

图2-43  Box Collider组件

提示:Center属性用于指定框线的位置,Size属性则负责大小;

(7)UIPlay Sound(Script)组件,如图2-44所示,用于设置当按钮上有指定事件被触发的时候,需要播放的声音片段。

图2-44  UIPlay Sound(Script)组件

提示:如果读者需要让按钮在不同的事件下,发出不同的声音,可以为按钮添加多个此组件,每个组件负责一个事件被触发时,需要播放的声音。

(8)UIButton(Script)组件,如图2-45所示,用于设置按钮的状态。

图2-45  UIButton(Script)组件

q  Target:指定当按钮上有指定事件发生时,颜色的变化应该发生在哪个对象上?显然答案是,按钮对象的背景,即Background。

q  Normal:指定正常情况下,按钮的颜色;

q  Hover:指定当鼠标盘旋在按钮上的时候,按钮的颜色;

q  Pressed:指定当鼠标单击按钮的时候,按钮的颜色;

q  Disabled:指定当按钮变得不可用的时候,显示的颜色;

q  Duration:用于指定各状态间发生转换的时候,需要经过的过渡时间;

q  Notify:用于指定当On Click,即点击事件发生的时候,要如何处理;

提示:开发者可以在脚本中自定义负责处理此事件的方法,但是对于方法的定义是有要求的,即方法必须没有参数,且被声明为公有。

(9)使用向导创建的按钮,如图2-46所示。

图2-46  使用向导创建的按钮(Scene视图里的效果)

2.4.2  示例:为游戏界面添加按钮

作为示例,本小节将会添加两个按钮到游戏的界面,分别负责游戏的开始和结束。具体的操作步骤如下:

(1)使用上一小节介绍的方法,在Panel对象下创建一个按钮对象,并将其命名为Exit。

(2)此按钮被点击的时候,游戏应该结束。而这个事件的处理需要新建一个脚本,并自定义方法来处理。在Project视图里,新建一个C#脚本,将其命名为GameManager,为此脚本添加下面的代码:

01     using UnityEngine;

02     using
System.Collections;

03

04     public class GameManager : MonoBehaviour

05     {

06              public void ExitPressed()

07              {

08                       Application.Quit ();

09              }

10     }

q  脚本06行,定义了用来处理按钮被单击事件的方法,其名为ExitPressed();

提示:此方法没有参数,且被声明成了公有的。这是处理按钮点击事件的方法必须要满足的条件。

q  脚本08行,语句负责实际的结束游戏操作;

(3)选中Exit按钮,然后在Inspector视图里,设置其UIButton(Script)组件下的属性,如图2-47所示。

q  Normal:R:185,G:255,B:255,A:255;

q  Hover:R:0,G:220,B:255,A:255;

q  Notify:GameManager;

q  Method:GameManager.ExitPressed;

图2-47  设置UIButton(Script)组件的各属性

提示:虽然已经定义了用于处理按钮点击事件的方法,但是要指定这个方法去处理那个事件,这个脚本还必须被赋予一个具体的游戏对象才行。为此,读者需要在Hierarchy视图里,新建一个空对象,将其命名为GameManager,读者也可以选择其它的名字。然后将脚本GameManager.cs赋予此空对象。

(4)为Exit按钮添加UIAnchor(Script)组件,并设置其下列属性,如图2-48所示。于是Exit按钮就会显示在Window的左下角。

q  Container:Window;

q  Side:BottomLeft;

q  Pixel Offset:X:135,Y:60;

图2-48  设置UIAnchor(Script)组件的各属性

(5)设置Exit子对象Background的Depth属性为2。

(6)设置Exit子对象Label的文本内容为“Exit”,Depth属性为3。

(7)完成以上的所有设置以后,Exit按钮在游戏界面上的显示效果,如图2-49所示。

图2-49  Exit按钮在游戏界面上的显示效果

(8)使用同样的方法,创建名为Play的按钮,其属性设置与Exit按钮基本一致。因此读者也可以直接在选中Exit按钮的时候,按下Ctrl+D快捷键,获得Exit按钮的拷贝,然后做下列设置。UIButton(Script)和UIAnchor(Script)组件的属性设置,如图2-50所示。

q  将按钮对象命名为Play;

q  设置Notify属性为None;

q  Container:Window;

q  Side:BottomRight;

q  Pixel Offset:X:-150,Y:60;

图2-50  UIButton(Script)和UIAnchor(Script)组件的属性设置

(9)此时,Play按钮的点击事件还没有指定方法去处理。在此向读者介绍另一种处理按钮点击事件的方法,就是新建脚本,然后在脚本中用指定的方法(OnClick ())处理按钮的点击事件。将新建的C#脚本命名为LoadLevelOnClick,然后在此脚本中添加下面的代码:

01     using UnityEngine;

02

03     public class LoadLevelOnClick : MonoBehaviour

04     {

05              public string levelName;

06              void OnClick ()

07              {

08                       if (!string.IsNullOrEmpty(levelName))

09                       {

10                                 Application.LoadLevel(levelName);

11                       }

12              }

13     }

q  脚本06行,OnClick()方法在按钮被单击的时候,会主动被Unity调用去处理单击事件;

q  脚本08~11行,是事件发生时所做的操作,即载入新的场景;

q  脚本05行,levelName变量表示的就是需要载入的场景的名称,读者需要在Inspector视图里面为这个变量赋值;

(10)将LoadLevelOnClick脚本赋予Play游戏对象,然后选中后者,在Inspector视图里设置其Level Name属性为读者需要载入的场景名称即可。如图2-51所示,即添加到游戏背景右下角的Play按钮。

图2-51  位于游戏背景右下角的Play按钮

提示1:本节示例所创建的脚本LoadLevelOnClick,其代码实际上来源于NGUI自带的脚本示例,因为那个脚本中的代码专用于处理单击事件,因此作者就将其应用到了按钮的单击事件中了。要想查看所有的脚本示例,只需单击Component|NGUI|Examples命令即可,如图2-52所示,列出了所有的脚本名

图2-52  NGUI自带的脚本示例

提示2:本节介绍的UI控件是“普通按钮”,还有种UI控件是“图片按钮”,即Image Buttons。它们的属性基本类似,区别仅仅在于前者Normal、Hover、Pressed和Disabled的属性值是颜色,后者同样的属性值是图片。

在完成以上设置以后,在Game视图中看到的游戏背景,效果如图2-53所示。

图2-53  目前游戏背景的效果图使用向导创建按钮NGUI从入门到实战大学霸

Comments are closed.