// 检查 Cover 状态
        internal void CheckCoverStatus()
        {
            int coverCount = CoverStatus.Count;

            for (int i = 0; i < coverCount; i++)
            {
                if (CoverStatus[i].PointerID < 0)
                {
                    // 鼠标判断
                    int NowX = (int)Input.mousePosition.x;
                    int NowY = (int)Input.mousePosition.y;
                    if (CoverStatus[i].PrevX != NowX || CoverStatus[i].PrevY != NowY)
                    {
                        CoverStatus[i].PrevX = NowX;
                        CoverStatus[i].PrevY = NowY;
                        PointerEventCache.Add(new PointerData()
                        {
                            InputType = PointerInputType.Mouse, EventType = PointerEventType.Cover,
                            PointerID = -1, X = NowX, Y = NowY
                        });
                    }
                }
                else
                {
                    // 触屏判断
                    int touchCount = Input.touches.Length;
                    for (int j = 0; j < touchCount; j++)
                    {
                        if (CoverStatus[i].PointerID == Input.touches[j].fingerId)
                        {
                            int NowX = (int)Input.touches[j].position.x;
                            int NowY = (int)Input.touches[j].position.y;
                            if (CoverStatus[i].PrevX != NowX || CoverStatus[i].PrevY != NowY)
                            {
                                CoverStatus[i].PrevX = NowX;
                                CoverStatus[i].PrevY = NowY;
                                PointerEventCache.Add(new PointerData()
                                {
                                    InputType = PointerInputType.Touch, EventType = PointerEventType.Cover,
                                    PointerID = CoverStatus[i].PointerID, X = NowX, Y = NowY
                                });
                            }
                            break;
                        }
                    }
                }
            }
        }
        // --- Private Function ------------------------------------------------------------------------------------------------------------------------------------------- //

        // 缓存指针事件
        private void CachePointerEvent(PointerEventType type, PointerEventData data)
        {
            PointerData pointerData = new PointerData()
            {
                InputType = data.pointerId < 0 ? PointerInputType.Mouse : PointerInputType.Touch,
                EventType = type,
                PointerID = data.pointerId,
                X         = (int)data.position.x,
                Y         = (int)data.position.y
            };

            PointerEventCache.Add(pointerData);
            if (pointerData.EventType == PointerEventType.Enter)
            {
                // 添加 Cover 状态
                CoverStatus.Add(new PointerCoverStatusForUI()
                {
                    PointerID = pointerData.InputType == PointerInputType.Mouse ? -1 : pointerData.PointerID,
                    PrevX     = pointerData.X,
                    PrevY     = pointerData.Y
                });
            }
            else if (pointerData.EventType == PointerEventType.Exit)
            {
                // 移除 Cover 状态
                int coverCount = CoverStatus.Count;
                for (int i = coverCount - 1; i >= 0; i--)
                {
                    if (CoverStatus[i].PointerID == pointerData.PointerID)
                    {
                        CoverStatus.RemoveAt(i);
                        break;
                    }
                }
            }
        }