unity3d - Unity - 无法在嵌套的实例化预制件上检测 OnPointerDown
问题描述
我动态地创建了一个预制件的实例——叫做 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);
}
但是 - 胡萝卜中的那个永远不会被调用。我总是从 Animal 实例中获取调试日志。
知道为什么我无法检测到两者上的指针,以便我知道用户是否单击/轻敲了胡萝卜或持有它的动物?
解决方案
归根结底-胡萝卜中的侦听器根本没有开火:( ...即使我删除了动物上的侦听器。
所以 - 我最终将 Animal 监听器的 PointerEventData 参数数据转换为世界位置,并将其与 Animal 本身的 transform.position 进行比较 - 从而指定用户是点击了动物还是胡萝卜。
愚蠢......但工作:)
推荐阅读
- python - Python模块xhtml2pdf - 页脚之外的页数
- javascript - 如何增加语义 UI 中单个选项的高度?
- python - 无法在 for 循环中获取先前的值而不会将其全部搞砸
- python - linux crontab 使用谷歌 api 驱动器失败
- chart.js - 我可以删除 chart.js 上的 Y 轴计数器吗?
- python - 递归分治最长运行
- android - 导航抽屉未在工具栏上绘制
- javascript - 如何在 javascript 中获取 XMLHttpRequest 的源端口并将其放入变量中?
- javascript - 无法让“setTimeout”延迟随机时间
- haskell - 如何推断 Scott 编码的 List 构造函数的类型?