开关控件为游戏界面添加静音开关控件NGUI从入门到实战大学霸

开关控件为游戏界面添加静音开关控件NGUI从入门到实战大学霸

NGUI从入门到实战

NGUI从入门到实战

2.7  开关控件开关控件为游戏界面添加静音开关控件NGUI从入门到实战大学霸

开关控件(Toggle),这个名称也许并不常见,但却不意味着读者很少接触这种控件。开关控件的例子就是单选按钮、复选按钮等等。本节就来说明在Unity中,使用NGUI创建及使用开关控件的方法。

2.7.1  使用向导创建开关控件开关控件为游戏界面添加静音开关控件NGUI从入门到实战大学霸

创建滑块的步骤如下:

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

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

q  Templete:Toggle;

q  Background:Dark;

q  Checkmark:X;

q  Add to:Sound;

图2-81  使用向导创建开关控件

(3)返回到Hierarchy视图,查看使用向导创建的开关控件,读者会发现它是由Background、Checkmark和Label对象组成的,如图2-82所示。这里,也可以看作是2个Sprite,1个Label组成,分别表示滑块的背景色、复选标记和开关控件名。

图2-82  位于Sound空对象下,新创建的开关控件

(4)在Hierarchy视图里选中新创建的开关控件(即Toggle对象),在Inspector视图里可以看到UIToggle(Script)组件,如图2-83所示。

图2-83  UIToggle (Script)组件

q  Group:此属性设置当前的开关控件属于哪个组,处于同一个组中的开关控件,一次只能有一个可以处于被选中状态,也就是常见的单选按钮;

q  Start State:此属性设置开关控件默认情况下,所处的状态,即是否被选中;

q  Animation:设置当开关控件状态改变时,所播放的动画效果;

q  Sprite:此属性决定使用哪个Sprite表示开关控件被选中;

提示:使用向导创建开关控件时,使用的Sprite是X,即Checkmark属性的值。

q  Transition:此属性决定开关控件状态改变时的速度;是要立即改变(设置为Instant),还是有一定的过渡(Smooth)。

(5)使用向导创建的开关控件,如图2-84所示。

图2-84  使用向导创建的开关控件(Scene视图里的效果)

2.7.2  示例:为游戏界面添加静音开关控件

如果玩家由于某种特殊原因,不希望游戏发出声音的时候,当然可以选择将游戏的音量调节为0来实现,但是这种方式并不够直接。那么本小节就为游戏添加一个更直接的方式,即添加静音开关控件,如图2-85所示。

图2-85  游戏静音开关控件示例

具体的操作步骤如下:

(1)在Hierarchy视图里,为Panel对象添加一个子对象,并命名为Sound。

(2)在Hierarchy视图里,同时选中Volume的子对象:Background和Label,然后按下快捷键Ctrl+D,即可获得这两个对象的拷贝。最后将它们拖动到Sound对象下。

(3)设置Background的Pixel Offset属性为:X:-420,Y:43。

(4)设置Label的文本为:[AAFFFF]Sound。完成以上的设置以后,在Game视图上看到的效果如图2-86所示。其位于游戏界面中间靠左侧的地方。

图2-86  来自Game视图上的效果

(5)在Hierarchy视图里,为Sound对象添加一个开关控件Toggle,向导各属性的设置与上一小节相同。为Toggle对象添加UIAnchor(Script)组件,并设置下列属性:

q  Container:Background;

提示:此Background是Sound的子对象。

q  Pixel Offset:X:-38,Y:-20;

完成以上设置以后,在Scene视图中看到的效果如图2-87所示。

图2-87  Scene视图中的效果图

(6)在Hierarchy视图里,选中Toggle的子对象Background,然后设置下列属性:

q  Depth:3;

q  Color Tint:R:130,G:255:B:130,A:255;

(7)在Hierarchy视图里,选中Toggle的子对象Checkmark,然后设置下列属性:

q  Depth:4;

q  Color Tint:R:50,G:255:B:70,A:255;

(8)在Hierarchy视图里,选中Toggle的子对象Label,然后设置下列属性:

q  Depth:3;

q  Color Tint:R:200,G:255:B:250,A:255;

q  Label中的文本:[AAFFFF]Enabled;

完成以上的设置以后,得到的效果如图2-88所示。

图2-88  Scene视图中的效果图

(9)游戏界面上的静音开关控件已经设置好了,接下来就该实现它应有的效果了。首先是,希望在玩家设置了静音以后,游戏界面上的音量调节滑块会消失!毕竟静音的时候,音量调节滑块这个控件就失去了意义。要完成这个效果,可以借助于NGUI自带的一个脚本。先选中Toggle,然后单击Component|NGUI|Interaction|Toggled Objects命令,即可为Toggle对象添加名为UIToggled Objects(Script)组件,如图2-89所示。

图2-89  UIToggled Objects(Script)组件

提示:UIToggled Objects(Script)组件中有2个属性组:Activate和Deactivate。前者列出的都是开关控件被复选时,要设置为可用的游戏对象;后者列出的是开关控件取消复选时,要设置为可用的游戏对象。示例中为Activate属性组添加了一个游戏对象Volume。

(10)运行游戏,当开关控件被复选的时候,Volume才会出现,如图2-90所示。

图2-90  Sound决定是否需要Volume

(11)界面效果已经实现了,接下来就是功能效果了,也就是当玩家在界面上设置为静音时,游戏就真的不会播放声音了!为此需要在脚本VolumeManager中,添加实现此功能的方法,如下:

01     using UnityEngine;

02     using System.Collections;

03

04     public class VolumeManager : MonoBehaviour

05     {

06              …                                                             //省略

07              public void OnSoundToggle()

08              {

09                       float newVolume = 0;

10                       if(UIToggle.current.value)

11                                 newVolume = slider.value;

12                       AudioListener.volume = newVolume;

13              }

14     }

脚本新添加的方法的功能实现原理是,如果检测到开关控件没被选中,就将声音的音量调节为0。反之就调节音量为滑块设置的值。

(12)在Hierarchy视图里,选中Toggle,然后在Inspector视图里设置下列属性,如图2-91所示。

q  Notify:Slider;

q  Method:VolumeManager. OnSoundToggle;

图2-91  UIToggle(Script)组件属性设置

(13)当开关控件被选中的时候,界面上的效果是,出现Volume设置。与此同时VolumeManager脚本中的OnSoundToggle()方法会被调用,游戏开始播放声音。当开关控件没被选中的时候,界面上的Volume消失,与此同时,VolumeManager脚本中的OnSoundToggle()方法会被调用,游戏停止播放声音开关控件为游戏界面添加静音开关控件NGUI从入门到实战大学霸。

Comments are closed.