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,并将附加适当的脚本,如EventSystem
, StandAloneInputModule
。
2.必须将PlaneBehaviour
脚本附加到PlaneBehaviour
,而Collider 不是空的GameObject。 它会检测到它所附着的对象的点击。
3.如果您使用的是名称中以“2D”结尾的对撞机,则必须使用PhysicsRaycaster
而不是PhysicsRaycaster
。
4,你使用两台以上的相机吗? 如果是这样,请手动将PhysicsRaycaster
连接到当前显示该Object的正确Camera。
5.重新调整想要检测点击次数的游戏对象的大小。 我见过这样做有时会解决问题。 如果可行,则必须将相机移回。
上述就是C#学习教程:EventSystem OnPointerXXX函数未被调用分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/957132.html