【问题标题】:Unity : How to make physics 2d raycaster go through UI elements?Unity:如何让物理 2d 光线投射器通过 UI 元素?
【发布时间】:2019-07-21 12:25:07
【问题描述】:

我正在开发一款手机游戏。我在光线投射和事件方面遇到了一些问题。

我有一个屏幕空间叠加画布,其中有一个覆盖区域 A 的 UI 图像。此图像设置为透明。它的目的是接收用户输入。

然后我还有一个世界游戏对象,一个 位于 A 区域内的 2d 精灵。这个精灵附有一个 2d 盒子碰撞器。这个精灵充当用户可以按下的世界对象(如建筑物)。

我已经设置了一个物理 2d 光线投射器来检测 2d 精灵上的输入。我遇到的问题是 UI 图像显然阻挡了 2d 物理射线投射 到 2d 精灵。只有当我关闭 UI Image 时,我才能接收到物理 raycast 事件。

帮助。难道我做错了什么?我认为物理 2d 射线投射仅与 2d 物理组件反应?

这是附加到 2d 精灵的脚本。

using UnityEngine.EventSystems;
public class SpriteSelector : MonoBehaviour, IPointerDownHandler
{
    public void OnPointerDown(PointerEventData eventData)
    {
        Debug.Log("Sprite selected");
    }
}

这是附加到 UI 图像的脚本。

using UnityEngine.EventSystems;
public class UIImageSelector : MonoBehaviour, IPointerDownHandler
{
    public void OnPointerDown(PointerEventData eventData)
    {
        Debug.Log("UI Image selected");
    }
}

【问题讨论】:

    标签: c# unity3d raycasting


    【解决方案1】:

    您需要取消选中Raycast Target

    【讨论】:

      【解决方案2】:

      由于您似乎也希望在透明背景图像上接收用户输入,因此您只需对层次结构中的图像重新排序即可。对象相对于其兄弟对象越靠下,它离相机越近,即您可以将按钮移动到层次结构中的背景下方,并且光线投射应该首先点击按钮。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-23
        相关资源
        最近更新 更多