public override void Disable()
 {
     m_TrackLeft  = null;
     m_TrackRight = null;
     m_leftDelta  = Vector2.zero;
     m_rightDelta = Vector2.zero;
     OnLeftDelta?.Invoke(m_leftDelta);
     OnRightDelta?.Invoke(m_rightDelta);
     UIT_JoyStick.Instance.OnDeactivate();
 }
    public override void Tick(float deltaTime)
    {
        if (UIT_JoyStick.Instance == null)
        {
            return;
        }

        m_rightDelta = Vector2.zero;
        int touchCount = Input.touchCount;

        for (int i = 0; i < touchCount; i++)
        {
            Touch t = Input.GetTouch(i);
            if (t.phase == TouchPhase.Began)
            {
                TouchTracker track = new TouchTracker(t);
                if (m_TrackLeft == null && track.isLeft && track.isDown)
                {
                    m_TrackLeft = track;
                    UIT_JoyStick.Instance.OnActivate(m_TrackLeft.v2_startPos);
                    m_leftDelta = Vector2.zero;
                }
                else if (m_TrackRight == null && !track.isLeft)
                {
                    m_TrackRight = track;
                }
            }
            else if (t.phase == TouchPhase.Ended || t.phase == TouchPhase.Canceled)
            {
                if (m_TrackLeft != null && t.fingerId == m_TrackLeft.m_Touch.fingerId)
                {
                    m_TrackLeft = null;
                    UIT_JoyStick.Instance.OnDeactivate();
                    m_leftDelta = Vector2.zero;
                }
                if (m_TrackRight != null && t.fingerId == m_TrackRight.m_Touch.fingerId)
                {
                    m_TrackRight = null;
                }
            }
            else if (t.phase == TouchPhase.Moved)
            {
                if (m_TrackRight != null && t.fingerId == m_TrackRight.m_Touch.fingerId)
                {
                    m_TrackRight.Record(t);
                    m_rightDelta = t.deltaPosition;
                }
                else if (m_TrackLeft != null && t.fingerId == m_TrackLeft.m_Touch.fingerId)
                {
                    m_TrackLeft.Record(t);
                    m_leftDelta = UIT_JoyStick.Instance.OnMoved(t.position);
                }
            }
        }

#if UNITY_EDITOR
        m_leftDelta  = new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"));
        m_rightDelta = new Vector2(Input.GetAxis("Mouse X"), Input.GetAxis("Mouse Y"));
#endif

        if (OnCanSendDelta != null && !OnCanSendDelta())
        {
            m_leftDelta  = Vector2.zero;
            m_rightDelta = Vector2.zero;
        }

        OnLeftDelta?.Invoke(m_leftDelta);
        OnRightDelta?.Invoke(m_rightDelta);
    }