很久没更,最近公司的手游准备二测,加上蛮牛上教程的同步更新,所以一直到现在才开始恢复公众号的内容更新。之后会在游戏蛮牛和公众号上同步更新。
附上蛮牛地址:http://www.manew.com/forum-53-465-1.html(个人微信公众号不能直接附跳转链接,大家可以复制链接地址粘贴到浏览器中访问即可。)
今天还是继续UGUI主题的分享,今天分享的内容是UGUI里的Toggle组件。
进入正题
说到Toggle,可能大家会觉得陌生,什么是toggle?Unity中的Toggle可以说是一个或者是一组可以切换的按钮。
不管对Toggle理解多少,先来看下面一组游戏效果图
上面的一组可切换的功能按钮就是利用Unity里的Toggle组件制作的。现在是不是对Toggle已经有了一个大概的理解了,至少知道他是什么了,那具体怎么使用呢?
先在Unity里创建一个Toggle来看看他的结构。
再来看下Toggle这个组件的具体内容。
然后再来看下Toggle这个对象的父子关系。
猛然一看是不是觉得Toggle组件的内容和Button还是有些相像的?没错,Button和Toggle都有交互的开关(Interactable),以及Trasition的交互动画选择。
那不一样的就是从IsOn开始。
IsOn代表当前Toggle的开关是开着还是关闭的。
ToggleTrasition也是过渡的动画类型选择,Fade是渐变的意思。
Graphic是Toggle的切换文理。也就是第一个Gif图里的对勾。
Group是当前Toggle所属的组。不同的Toggle可以在一个分组内使用。
知道这些以后,重新回头看看第一个游戏内的效果图。
音乐音效等开关就是单独的Toggle使用。
下面的画质选择,就是让三个Toggle在一个Group组内。当其中一个选中后,会自动清除同组内其他Toggle的标记。
下面来看一下,如何增加Toggle的Group。
首先我们创建一个空的GameObject当做所有Toggle的组节点对象。然后增加一个组件,叫做Toggle Group。
来说下ToggleGroup这个组件,非常简单。他只有一个选项。
Allow Switch Off,这个开关是控制是否允许本组内的Toggle存在关闭状态的。
默认情况下,一组Toggle至少会有一个处于激活状态,如果这个选项不勾选的话,是不可能存在一组内一个Toggle都未激活的。
如果勾选了这个Allow Switch Off就相当于允许本组内的Toggle出现一个都未选中激活的状态。
具体来看下这个Gif图。我们把之前创建好的Toggle放到GameObject下,并且再复制两个出来。
调整完合适的位置之后,把这三个Toggle的Group选项全部拖选成GameObject
此时GameObject上的Toggle Group的Allow属性是关闭的。运行游戏看看效果。
运行效果如上,此时,这组Toggle不允许出现一个都未激活的Toggle。
然后我们把Toggle Group的Allow Switch Off勾选。
功能就是这样,具体应该设置成什么样子,根据大家的需求来决定。
在知道如何编辑器下控制Toggle以后,接下来就到了脚本获取Toggle切换事件的获取了。
可想而知,我们从一个Toggle,切换成另外一个Toggle,或者单独的一个Toggle来回切换,我们如何通过代码得知这个事件?
老样子,创建一个脚本,然后公开一个Toggle,挂载到GameObejct上。
然后在脚本内打开Start函数,然后用Toggle去点,看看有什么方法和属性可以被点出来。
Toggle有一个事件叫做onValueChanged。代表Toggle的勾选状态发生了改变。我们可以通过监听这个函数,来监测Toggle在什么时候被切换。
通过上面的表达式,可以为我们的Toggle增加状态变化的监听事件。但是OnValueChanged是有一个Bool为参数的,来告诉我们,当前isOn的状态是True还是False。
那么我们在表达式内增加一个bool参数state,代表状态标记。
通过State来作状态区分,state为True代表Toggle被选中,否则被取消。
然后我们在这里增加些日志输出。
然后我们回到Unity来查看下运行效果。
好了,今天对Toggle的使用分享就到这里。
有问题大家可以给我留言。
ヾ( ̄▽ ̄)Bye~Bye~