Unity GUI 之定位RaycastTarget取消不必要交互

2025-10-04 13:01:21

1、打开Unity,新建一个工程,具体如下图

Unity GUI 之定位RaycastTarget取消不必要交互

2、在场景中添加两个 Image 和 一个 Button UI 元素,,其中取消一个 Image 的Raycast Target,具体如下图

Unity GUI 之定位RaycastTarget取消不必要交互

Unity GUI 之定位RaycastTarget取消不必要交互

3、在工程中新建一个脚本,并双击打开,具体如下图

Unity GUI 之定位RaycastTarget取消不必要交互

4、脚本的具体代码和代码说明如下图

Unity GUI 之定位RaycastTarget取消不必要交互

5、脚本的具体内容如下:

using UnityEngine;

using UnityEngine.UI;

public class RaycastTargetOrientation : MonoBehaviour {

    // 定义一个静态变量保存UI四个角点位置信息

    private static Vector3[] UIFourCorners = new Vector3[4];

    private void OnDrawGizmos()

    {

        // 获取所有 UI元素

        MaskableGraphic[] maskableGraphics = GameObject.FindObjectsOfType<MaskableGraphic>();

        // 遍历所有元素

        foreach (MaskableGraphic mg in maskableGraphics) {

            // 如果元素勾选 raycastTarget,则进行划线显示

            if (mg.raycastTarget == true)

            {

                RectTransform rect = mg.transform as RectTransform;

                rect.GetWorldCorners(UIFourCorners);

                Gizmos.color = Color.red;

                for (int i = 0; i < 4; i++)

                {

                    Gizmos.DrawLine(UIFourCorners[i], UIFourCorners[(i + 1) % 4]);

                }

            }

                    }

    }

}

6、脚本编译正确,回到Unity,在场景中添加一个 GameObject,并挂载上脚本,在Scene窗口即可看到勾选 Raycast Target的UI元素被红框标记,具体如下图

Unity GUI 之定位RaycastTarget取消不必要交互

Unity GUI 之定位RaycastTarget取消不必要交互

7、再次取消另一个不必要有交互的 Image 的 Raycast Target,在Scene窗口即可看到她的UI 红框消失了,具体如下图

Unity GUI 之定位RaycastTarget取消不必要交互

Unity GUI 之定位RaycastTarget取消不必要交互

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢