我们在使用UGUI开发UI界面时,并不是所有的Image或者Text需要勾选raycastTarget属性,raycastTarget如果被勾选的过多的话, 效率必然会降低,那么我们怎么去找到所有被勾选上raycastTarget的UI元素呢?
代码如下:
#if UNITY_EDITOR
using UnityEngine;
using UnityEngine.UI;
public class UGUIUtil1 : MonoBehaviour {
static Vector3[] fourCorners = new Vector3[4];
void OnDrawGizmos()
{
foreach (MaskableGraphic g in GameObject.FindObjectsOfType<MaskableGraphic>())
{
if (g.raycastTarget)
{
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]);
Gizmos.DrawLine(fourCorners[0], fourCorners[2]);
Gizmos.DrawLine(fourCorners[1], fourCorners[3]);
}
}
}
}
#endif
如图:被勾选上raycastTarget的UI元素,将已蓝色线框显示。

被选中的UI元素