Unity UI组件Toggle的两个坑

这几天使用Toggle组件遇到的两个坑:

  1. 第一个坑是,容易忽略Toggle组件的onClick.AddListener()方法,只有在属性isOn有变化的时候才会触发这个AddListener()监听。明确的来说,这个坑点不算是坑,是自己没有理解到位这个方法的使用,这里主要容易踩坑的地方是,UI预制体默认勾选了其中一个Toggle的isOn,然后想默认打开某个界面UI的时候,刚好也想默认触发这个Toggle的监听方法:
private void Event()
{
    
    
	toggl1.onClick.AddListener(isOn => if(isOn) Fun());
}
public void Open()
{
    
    
	toggle1.isOn = true;//想默认触发toggle1监听的方法
}

最后的结果是:由于toggle1的isOn已经默认勾选了,再设置它的isOn值为true,因为isOn的值并没有发生变化,所以并不会触发监听的方法。我的解决办法是:

public void Open()
{
    
    
	toggle1.isOn = false;//先置为false;
	toggle2.isOn = false;//先置为false;
	toggle3.isOn = false;//先置为false;
	toggle1.isOn = true;//想默认触发toggle1监听的方法
}

  1. 第二个比较坑的点是,Toggle组件在父物体或者界面关闭隐藏之后,Toggle的属性isOn的值并不会被设置为false。这个情况很容易被忽视,当有上面那种情况,打开界面触发某个方法事件的时候,由于isOn的值并没有发生变化,所以也不会触发监听的事件。所以像这种情况,依然可以用上面的方法解决。

猜你喜欢

转载自blog.csdn.net/weixin_42205218/article/details/107396543