开关控件为游戏界面添加静音开关控件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.