Unity 3D,即使Sprite不可见,如何检测鼠标是否在2D Sprite上

问题描述

我使用Unity3D游戏引擎,偶然发现了这个问题。 当我尝试检查鼠标是否在精灵上方时,可以使用此回调函数来实现。

private void OnMouSEOver()
{
    // Do Something
}

但是,如果鼠标不在精灵上方,则此方法将不起作用。 还有其他选择吗?

橙色精灵是我要检测的精灵,但是蓝色圆圈使它无法检测到鼠标(这看起来不太好,我不是艺术家,但我希望我想说得很清楚)

解决方法

如果您想知道鼠标单击下方有哪些对象,请使用以下方法:

示例-放入更新中

if (Input.GetMouseButtonDown(0))
{
    var ray = Camera.main.ScreenPointToRay(Input.mousePosition);
    var hits = Physics2D.GetRayIntersectionAll(ray,1500f);

    foreach (var hit in hits)
    {
        print($"Mouse is over {hit.collider.name}");
    }
}

出于性能原因,您可能需要使用: