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(){//查找子物体ButtonTransform 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事件处理
判定当前的开关是否打开
动态传参和静态传参
该系列专栏为网课课程笔记,仅用于学习参考。