EventSystem OnPointerXXX函数未被调用

我有一个包含大约200个瓷砖的平面,我希望能够检测到播放器点击了哪个瓷砖。 每个瓷砖都附有一个盒子对撞机。 我还在场景中创建了一个空的游戏对象,我附加了EventSystem和下面的脚本:

 public class PlaneBehaviour : MonoBehaviour, IPointerDownHandler { public GameObject ClickSymbol; public void Start() { var physicsRaycaster = FindObjectOfType(); if (physicsRaycaster == null) { Camera.main.gameObject.AddComponent(); } } public void OnPointerDown(PointerEventData eventData) { var o = eventData.pointerCurrentRaycast.gameObject; } } 

现在,当用户点击任何地方时,没有任何反应 – 我在OnPointerDown方法中放置了一个断点,但它没有被命中(并且Start方法中的代码已经运行 – 我还通过在其中放置一个断点来validation) 。

有很多事情可能导致回调函数无法被调用。 在尝试这些之前,将Debug.Log放在OnPointerDown函数中以确保它被调用:

1.转到GameObject – > UI —> EventSystem。

将创建一个名为“EventSystem”的 GameObject,并将附加适当的脚本,如EventSystemStandAloneInputModule

2.必须将PlaneBehaviour脚本附加到PlaneBehaviour ,而Collider 不是空的GameObject。 它会检测到它所附着的对象的点击。

3.如果您使用的是名称中以“2D”结尾的对撞机,则必须使用PhysicsRaycaster而不是PhysicsRaycaster

4,你使用两台以上的相机吗? 如果是这样,请手动将PhysicsRaycaster连接到当前显示该Object的正确Camera。

5.重新调整想要检测点击次数的游戏对象的大小。 我见过这样做有时会解决问题。 如果可行,则必须将相机移回。