事件系统简介+Button组件+Toggle简介
UI的事件交互
Canvas添加
Ignore Reversed Graphics:是否忽略Canvas反向的事件操作
Blocking Objects:遮挡事件的物体(2D物体【精灵片】,3D物体)
Blocking Mask:遮挡事件的物体所在的渲染层
交互元素
Raycast Target:是否接收Canvas的射线
场景中存在事件系统
UI的射线检测会依次检测对象树下的所有元素,有任何射线检测成功,则会反馈到带有事件响应的组件(Button)中
如果想实现射线穿透,可以将前面显示的UI元素的射线检测关闭
Button组件
按钮是否可交互
按钮状切换效果
动画效果影响的UI元素(Image和Text派生自Graphic)
效果使用的图片
普通状态下的颜色
高亮状态下的颜色(鼠标移入)
按下状态的颜色(按钮按下)
失活状态下的颜色(不可交互)
颜色倍数(RGBA分量乘以倍数)
切换动画持续时间
是否开启键盘导航
回调代码的结构
委托
相关代码如下:
public delegate void MeDelegate();
public class TestDelegate : MonoBehaviour
{
//存储委托类型的成员变量
public UnityAction Func;
void Start()
{
//委托赋值
Func=Success;
//调用委托类型的函数
Func();
}
//委托所代表的函数
public void Success()
{
Debug.Log("Success");
}
}
回调结构:
相关代码如下:
public class TestCallback:MonoBehaviour{
public UnityAction Callback;
void Start(){
//定义回调函数
Callback=Success;
//做一些事情
for(int i=1;i<=1000;i++)
{
}
//完成事情,执行回调函数
Callback();
}
public void Success()
{
Debug.Log("Success");
}
}
按钮添加事件(Unity拖拽)
添加脚本,内部编写回调函数(挂在场景对象下)
找到Button,OnClick事件,添加(脚本所在对象,并选择回调函数)
运行项目,点击按钮(做一些事情)
按钮添加事件(代码方式)
public class TestCodeClick : MonoBehaviour
{
void Start()
{
//查找子物体Button
Transform trf=transform.Find("Button");
//获取Button组件
Button btn=trf.GetComponent<Button>();
//添加按钮点击回调函数
btn.onClick.AddListener(Success);
//删除按钮点击回调函数
btn.onClick.RemoveListener(Success);
//删除所有按钮点击回调函数
btn.onClick.RemoveAllListeners();
//触发调用所有回调函数
btn.onClick.Invoke();
}
public void Success()
{
Debug.Log("Success");
}
}
Toggle组件
Is On:用于判断当前Toggle是否为开启状态
Toggle Transition:Toggle中对勾切换的动画效果
Graphic:Toggle中对勾的贴图
Group:如果Toggle构成组,则需要将ToggleGroup拖给Toggle,例:
编辑各自Toggle文本后,即可实现组内选项只选其中一种的效果
若想要实现组内Toggle全不选的情况,勾选Group组件的Allow Switch Off即可
Toggle事件处理
判定当前的开关是否打开
动态传参和静态传参
该系列专栏为网课课程笔记,仅用于学习参考。