1、打开Unity,新建一个工程,具体如下图
2、在场景中添加两个 Image 和 一个 Button UI 元素,,其中取消一个 Image 的Raycast Target,具体如下图
3、在工程中新建一个脚本,并双击打开,具体如下图
4、脚本的具体代码和代码说明如下图
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元素被红框标记,具体如下图
7、再次取消另一个不必要有交互的 Image 的 Raycast Target,在Scene窗口即可看到她的UI 红框消失了,具体如下图