2、如果你问按钮是起什么作用的,那么它用来在发生按钮动作时命令MC做一些事情,比如跳转,加载,链接网页等等。
参考Unity 3D UGUI Toggle用法教程
Graphic :控制Toggle组件开关图片的显示隐藏,默认选取Checkmark,就是那个勾勾图片
挂上这个脚本,会发现事件中有一个带参数的,还有一个不带参数的:
虽然ListenInFunction是带参数的,但是却要选上面那个绿色不带参数的,刚开始我是懵逼的…………
参照 UGUI中Button和Toggle 添加动态事件 得到了解释:
选下方红色的静态方法,其实UI中会多出一个checkbox,可以指定传入的参数:
当然也可以传入其它类型,比如
参考
Unity UGUI入门组件整理(三)【Toggle组件与Toggle Group组件】
假如初始状态是Toggle3被勾选,当我点击Toggle1勾选时,打印如下:
这样就可以根据名字和选中状态来做逻辑处理了。
是否允许不打开任何开关?如果启用此设置,则按下当前打开的开关会将其关闭,因此没有任何开关处于打开状态。如果禁用此设置,则按下当前打开的开关将不改变该开关的状态。
这个说的有点绕,并且有些博客上还有种错误的说法,就是这个开关能允许Group多选。其实测试一下就知道了,在勾选Allow Switch off时,点击当前选中的Toggle,可以将当前Toggle改成未选择状态,此时整个Group中所有的Toggle都会处于未选择状态。而如果没勾选Allow Switch off,就达不到这个效果,会强迫你必须选一个。
在官方文档中,描述ToggleGroup叫开关组:
UGUI学习笔记(五) ToggleGroup制作选择题单选框
UGUI的鼠标事件:EventTrigger
自己写一个帮助类,便于调用(用回调,对相应鼠标事件添加事件,方便书写)
using System.Collections
using System.Collections.Generic
using UnityEngine
using UnityEngine.EventSystems
/// <summary>
/// 鼠标事件监听
/// </summary>
public class UIEventListener : EventTrigger
{
public delegate void PointerEventDelegate(PointerEventData eventData)
public PointerEventDelegate PointerEnterEvent
public PointerEventDelegate PointerExitEvent
public PointerEventDelegate PointerClickEvent
public PointerEventDelegate PointerDownEvent
public PointerEventDelegate PointerUpEvent
public PointerEventDelegate BeginDragEvent
public PointerEventDelegate OnDragEvent
public PointerEventDelegate EndDragEvent
public static UIEventListener GetEventListener(GameObject item)
{
UIEventListener uIEvent = null
if (item != null)
{
uIEvent = item.AddComponent<UIEventListener>()
}
return uIEvent
}
/// <summary>
/// 鼠标划入
/// </summary>
/// <param name="eventData"></param>
public override void OnPointerEnter(PointerEventData eventData)
{
base.OnPointerEnter(eventData)
PointerEnterEvent?.Invoke(eventData)
}
/// <summary>
/// 鼠标移出
/// </summary>
/// <param name="eventData"></param>
public override void OnPointerExit(PointerEventData eventData)
{
base.OnPointerExit(eventData)
PointerExitEvent?.Invoke(eventData)
}
/// <summary>
/// 鼠标点击
/// </summary>
/// <param name="eventData"></param>
public override void OnPointerClick(PointerEventData eventData)
{
base.OnPointerClick(eventData)
PointerClickEvent?.Invoke(eventData)
}
/// <summary>
/// 鼠标抬起
/// </summary>
/// <param name="eventData"></param>
public override void OnPointerDown(PointerEventData eventData)
{
base.OnPointerDown(eventData)
PointerDownEvent?.Invoke(eventData)
}
/// <summary>
/// 鼠标抬起
/// </summary>
/// <param name="eventData"></param>
public override void OnPointerUp(PointerEventData eventData)
{
base.OnPointerUp(eventData)
PointerUpEvent?.Invoke(eventData)
}
/// <summary>
/// 开始拖拽
/// </summary>
/// <param name="eventData"></param>
public override void OnBeginDrag(PointerEventData eventData)
{
base.OnBeginDrag(eventData)
BeginDragEvent?.Invoke(eventData)
}
/// <summary>
/// 拖拽中
/// </summary>
/// <param name="eventData"></param>
public override void OnDrag(PointerEventData eventData)
{
base.OnDrag(eventData)
OnDragEvent?.Invoke(eventData)
}
/// <summary>
/// 拖拽结束
/// </summary>
/// <param name="eventData"></param>
public override void OnEndDrag(PointerEventData eventData)
{
base.OnEndDrag(eventData)
EndDragEvent?.Invoke(eventData)
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)