为toggle父物体添加:toggleGroup组件,勾选Allow Switch Off
为每一个toggle选择下的Group选择添加toggleGroup组件的物体(此为toggle父物体)
void Start () {
toggles = transform.GetComponentsInChildren<Toggle>()
for (int i = 0i <toggles.Lengthi++)
{
Toggle toggle = toggles[i]
toggle.onValueChanged.AddListener((bool value) =>OnToggleClick(toggle, value))
}
}
//功能:点击选中某一个toggle时播放相对应的视频
void OnToggleClick(Toggle toggle,bool isSwitch) {
if (isSwitch)
{
print(toggle.name)
//改变文本字体的布局--居中
toggle.transform.Find("LabelBGImage/Label").GetComponent<Text>().alignment= TextAnchor.MiddleCenter
PlayerPrefs.DeleteAll()
PlayerPrefs.SetString("CurrentVideo","xuting")
SceneManager.LoadScene("fengcaiqiang")
}
else {
//改变文本字体的布局--低部居中
toggle.transform.Find("LabelBGImage/Label").GetComponent<Text>().alignment = TextAnchor.LowerCenter
}
}
参考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制作选择题单选框
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)