Unity - 无法在嵌套实例化预制件上检测到 OnPointerDown



我动态创建一个名为Animal的预制件实例。在某些情况下-我动态实例化嵌套预制在动物-称为胡萝卜。

动物和胡萝卜都实现了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);
}

然而,胡萝卜里的那个从来没有被调用过。我总是从Animal实例中获取调试日志。

你知道为什么我不能检测到指针向下,这样我就知道用户是否点击/点击了胡萝卜或持有胡萝卜的动物?

胡萝卜是更小还是在动物物体后面?动物物体可能会阻挡光线投射。看看这个组件

如果你想与它交互,下面的属性可能需要设置为false,因为它们是重叠的。

在一天结束时-胡萝卜中的听众根本没有开火:(…)即使我移除动物身上的监听器

因此,我最终将Animal侦听器的PointerEventData参数数据转换为世界位置,并将其与转换进行比较。动物本身的位置,从而指定用户是点击了动物还是胡萝卜。

哑……但工作:)

你需要在主摄像机中使用物理光线投射器,你需要设置最大光线交叉点0。

如果你想点击后面的对象,你可以改变最大光线相交数。

最新更新