我們在使用UGUI開發(fā)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元素