gpt4 book ai didi

c# - EventSystem OnPointerXXX 函数未被调用

转载 作者:太空宇宙 更新时间:2023-11-03 22:56:17 26 4
gpt4 key购买 nike

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

public class PlaneBehaviour : MonoBehaviour, IPointerDownHandler {
public GameObject ClickSymbol;

public void Start() {
var physicsRaycaster = FindObjectOfType<PhysicsRaycaster>();

if (physicsRaycaster == null) {
Camera.main.gameObject.AddComponent<PhysicsRaycaster>();
}
}

public void OnPointerDown(PointerEventData eventData) {
var o = eventData.pointerCurrentRaycast.gameObject;
}
}

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

最佳答案

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

1.转到GameObject-->UI--->EventSystem。

将创建一个名为 "EventSystem" 的游戏对象,并将适当的脚本(例如 EventSystemStandAloneInputModule 附加到它。

2PlaneBehaviour 脚本必须附加到具有碰撞器的游戏对象而不是到空游戏对象。它会检测对其所附加的对象的点击。

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

4.您是否使用两个以上的摄像头?如果是这样,请手动将 PhysicsRaycaster 附加到当前显示该对象的正确相机。

5。将要检测点击的游戏对象重新调整为更大。我看到这样做有时可以解决问题。如果可行,则必须将相机移回。

关于c# - EventSystem OnPointerXXX 函数未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45232431/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com