IPointerClickHandler不工作,因为类实现了Singleton



在我决定更改项目结构并使此类成为Singleton之前,我已经设置了一个运行良好的IPointerClickHandler

从那时起,函数CCD_ 2从未被触发。

有人解释说,当类有一个父类时,可能会出现错误,我们还应该添加IPointerDownHandlerIPointerUpHandler以使其工作,但这并没有起到作用。

public class PlaceTowers : Singleton<PlaceTowers>, IPointerClickHandler, IPointerDownHandler, IPointerUpHandler 

我还尝试过像那样将数据从Singleton发送到PlaceTowers类,但Singleton的OnPointClick()也没有得到触发器。

public abstract class Singleton<T> : MonoBehaviour where T : MonoBehaviour, IPointerClickHandler
{
public void OnPointerClick(PointerEventData eventData)
{
Debug.Log("In singleton");
PlaceTowers.i.OnPointerClick(eventData);
}

private static T I;
public static T i
{
get
{
if (I == null)
{
I = FindObjectOfType<T>();
}
return I;
}
}
}

你知道如何触发IPointerClickHandler吗?

检查文档中的abstract含义。抽象类就像其他类要继承的主父类。抽象类无法实例化。我会尝试在PlaceTowers中实现OnPointerClick,并确保实现在一个非抽象的实例类上。此外,我会确保实例已创建并在场景中。查看文档中它是如何在一个整体中实现的。还要检查您是否满足文档中提到的所有条件,例如确保事件系统存在。查找以下未调试的建议伪代码。

public abstract class Singleton<T> : MonoBehaviour where T : MonoBehaviour
{
private static T I;
public static T i
{
get
{
if (I == null)
{
I = FindObjectOfType<T>();
}
return I;
}
}
}
public class PlaceTowers : Singleton<PlaceTowers>, IPointerClickHandler, 
IPointerDownHandler, IPointerUpHandler {
public void OnPointerClick(PointerEventData eventData)
{
Debug.Log("In singleton");
PlaceTowers.i.OnPointerClick(eventData);
}
}