UGUI工具——获取RaycastTarget UI元素

我们在使用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元素
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容