UGUI中Button和Toggle 添加动态事件

时间:2022-05-01 00:06:15

1、Button添加OnClick

  Button组件的下方有一个OnClick()选项,这里就是为是Button添加点击事件的地方。
  UGUI中Button和Toggle 添加动态事件
  单击其下的“+”按钮为其添加一个事件
  UGUI中Button和Toggle 添加动态事件
  将想要点击时触发的函数脚本所在的对象拖入对象框中,在Function列表中选择点击时的事件就为Button添加了点击事件。
  UGUI中Button和Toggle 添加动态事件
  在上图中可以看到函数列表还可以选择SendMessage(string)这种带一个参数的函数(btw,两个以上参数的不能被选择)。当选择时如下图
  UGUI中Button和Toggle 添加动态事件
  这就相当于调用TestClick的SendMessage("TestClick")
  同理也可以使用一些参数为Bool、GameObject或其他类型为参数的事件,设定好想要使用的参数之后,就可以在点击事件中调用了。(举一反三,法力无边。e.g. 当相应按钮事件时想知道按钮本身,就可以为事件添加GameObject参数将Button拖进去。)
  
  PS:推荐参照UGUI研究院之控件以及按钮的监听事件系统(五)写一个类似NGUI中EventTrigger的脚本,这样就可以通用性地为UI添加事件,即使只是一个Image并没有挂UI控件或者OnPointerEnter/Exit这类非默认回调事件。

2、Toggle添加OnValueChange

  为Toggle添加OnValueChange类似Button添加OnClick,但需要注意的是Function列表中下面的是静态方法,上面的是动态事件,是系统自动生成, 其bool型参数已被封装在其中了,此时我们不能象Button那样去选择其静态方法了,而要选择与之对应的动态事件才可正常运行了
  UGUI中Button和Toggle 添加动态事件
  下方红线描出的为静态方法,功能类似上面讲述的为Button添加带参数回调事件一样,我们可以设定一个bool参数,这个参数不随Toggle的isOn变化。(知道以后才发现原来bug大都是“哦,原来是这样,白浪费了好久”)
  而上方绿线标出的不带参数的OnValueChange则为系统自动生成的动态事件,Toggle的isOn已经被封装到参数之中。
  

实现TabPage

   如果想实现TabPage的效果,可以将Toggle勾选时需要显示的GameObject的gameObject.SetActive 函数设为回调函数。
   UGUI中Button和Toggle 添加动态事件
   这样当选中该Toggle时目标可见,取消Toggle时目标隐藏,轻松实现标签页形式的UI,感觉功能类似NGUI中的UIToggled Objects脚本。