Toggle
Toggle继承了Selectable,实现了 IPointerClickHandler, ISubmitHandler, ICanvasElement三个接口,ICanvasElement是Canvas渲染的时候调用的接口.Toggle有一个比较重要的成员变量m_IsOn,表示是否被勾选,还有一个继承自UnityEvent<bool>的onValueChanged,也就是Toggle状态改变的回调.
Toggle重写了UIBehaviour的Start方法,在Start的时候调用PlayEffect,调用graphic.CrossFadeAlpha(根据状态改变/渐变图像的透明度).在OnEnable的时候SetToggleGroup将自己注册到当前的ToggleGroup,OnDisable的时候取消注册.
Toggle有一个属性变量group,在给Toggle设置ToggleGroup的时候,会把自己从上一个的ToggleGroup中取消注册,同时注册到当前ToggleGroup中,并且PlayEffect,调用graphic.CrossFadeAlpha(根据状态改变/渐变图像的透明度).
Set方法用于设置m_IsOn的值,并发送事件onValueChanged.Invoke(m_IsOn)。除此之外,Set方法还会调用m_Group.NotifyToggleOn(this)。
ToggleGroup
ToggleGroup继承自UIBehaviour,维护了一个Toggle列表m_Toggles,用来保存注册到当前ToggleGroup的Toggle.
NotifyToggleOn方法会把m_Toggles列表里面除了当前变化Toggle的状态都设置为false.
NotifyToggleOn方法会在Toggle的ToggleGroup变化的时候以及改变Toggle状态的时候被调用.