unity3d Unity -无法检测嵌套示例化预制件上的OnPointerDown

ef1yzkbh  于 2023-03-30  发布在  其他
关注(0)|答案(3)|浏览(228)

我动态地创建了一个预制件的示例-叫做Animal。在某些情况下-我动态地在Animal内部示例化嵌套的预制件-叫做Carrot。
Animal和Carrot都实现了IPointerDownHandler,并有OnPointerDown方法:

public void OnPointerDown(PointerEventData data)
{
    Debug.Log("POINTER DOWN IN ANIMAL !!!" + data);
}

public void OnPointerDown(PointerEventData data)
{
    Debug.Log("POINTER DOWN IN CARROT !!!" + data);
}

但是-carrot中的那个从来没有被调用过。我总是从Animal示例中获取调试日志。
你知道为什么我不能检测到指针都向下,所以我知道如果用户点击/点击胡萝卜或动物举行?

9q78igpj

9q78igpj1#

胡萝卜是较小还是在动物对象后面?动物对象可能会阻挡光线投射。Look at this component
如果您希望与以下内容交互,则可能需要将其设置为false,因为它们是重叠的The component property in code

ee7vknir

ee7vknir2#

在一天结束的时候-在胡萝卜的监听器没有火在所有:(...即使我删除监听器的动物。
所以-我最终将Animal侦听器的PointerEventData参数数据转换为世界位置,并将其与Animal本身的transform.position进行比较-从而指定用户是点击了动物还是胡萝卜。
很笨...但在工作:)

fzsnzjdm

fzsnzjdm3#

您需要在主摄影机中使用“物理光线投射器”,并且需要将“最大光线交叉点”设置为0。
如果要在对象后面单击,可以更改“最大光线交叉点”计数。

相关问题