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
}