EventSystem.Update

这个部分的优化比较简单,勾选所有UI组件没必要的 Raycast Target 选项

UGUI 底层会暴力遍历所有勾选了 Raycast Target 组件,然后判断当前点击那里

下面的代码可以有效的帮助我们绘制已经勾选了 Raycast Target 组件的绘制框,然后根据需求取消勾选即可

public class DrawRaycastor : MonoBehaviour {
#if UNITY_EDITOR
        static Vector3[] fourCorners = new Vector3[4];
        public bool      EnableDraw  = true;
        void OnDrawGizmos() {
            if(!EnableDraw){ return; }

            var raycastors = transform.GetComponentsInChildren<Graphic>();
            foreach(Graphic g in raycastors){
                if(!g.raycastTarget){ continue; }

                RectTransform rectTransform = g.transform as RectTransform;
                rectTransform.GetWorldCorners(fourCorners);
                Gizmos.color = Color.blue;
                for(int i = 0; i < 4; i++) Gizmos.DrawLine(fourCorners[i], fourCorners[(i + 1) % 4]);
            }
        }
#endif
    }