Unity GUI 之定位RaycastTarget取消不必要交互
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 红框消失了,具体如下图

