UI中用于响应点击事件的组件。阅读本文之前强烈建议先阅读Unity3D UGUI 源码学习 Selectable。
1 | public class Button : Selectable, IPointerClickHandler, ISubmitHandler |
继承自Selectable
,实现了IPointerClickHandler
和ISubmitHandler
。
Selectable
与Selectable
相比增加了点击的回调事件:
1 | [FormerlySerializedAs("onClick")] |
会在响应点击Click和提交Submit时调用。
IPointerClickHandler
需要实现方法OnPointerClick(PointerEventData eventData)
:
1 | public virtual void OnPointerClick(PointerEventData eventData) |
判断如果是左键PointerEventData.InputButton.Left
则调用私有方法Press()
:
1 | private void Press() |
如果是激活状态且可交互,则调用m_OnClick
。点击时的动画效果在Selectable
中(OnPointerDown()
等方法)。
ISubmitHandler
实现方法OnSubmit(BaseEventData eventData)
:
1 | public virtual void OnSubmit(BaseEventData eventData) |
先直接调用Press()
,如果是激活状态且可交互,则先切换到SelectionState.Pressed
,然后启用一个协程,等待一段时间后调用基类的DoStateTransition
方法:
1 | private IEnumerator OnFinishSubmit() |
本系列其它文章详见Unity3D UGUI 源码学习