Unity UGUI 射线raycast 描边检测

为了看出那个UI的raycast勾选了

 public class UIRayCast : MonoBehaviour
 {

      public static bool m_IsCheck = false;
#if UNITY_EDITOR
      [MenuItem("Tool/UI RayCast Check")]
      static void UIRayCastCheck()
      {
          m_IsCheck = !m_IsCheck;
      }
      Vector3[] fourCorners = new Vector3[4];
      void OnDrawGizmos()
      {
          if (m_IsCheck)
          {
              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++)
                      {
                          Vector3 offset = Vector3.zero;
                          switch (i)
                          {
                              case 1:
                                  offset = Vector3.down;
                                  break;
                              case 2:
                                  offset = Vector3.left;
                                  break;
                              case 3:
                                  offset = Vector3.up;
                                  break;
                              case 0:
                                  offset = Vector3.right;
                                  break;
                              default:
                                  break;
                          }
                          Gizmos.DrawLine(fourCorners[i] + offset * 5f, fourCorners[(i + 1) % 4] + offset * 5f);
                      }
                  }
              }
          }
      }
#endif
  }

要是有问题的话,这样

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]);
          }
      }
  }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值