我正在查看UnityEngine.UI源代码。我试图了解事件系统如何知道哪些类正在实现IDragHandler接口或任何其他事件系统接口。

我到达了一个只读的objectbool>或类似的地方。但是我没有找到数据所在的地方。

有人知道evetsystem如何知道一个类是否正在从事件系统实现接口吗?我找不到接口注册自己的地方。

最佳答案

GetComponent函数就是答案。如果不返回interface,它将实现null。如果返回null,则表示该接口未实现。

例如:

界面:

public interface IDrag { }


实现它的脚本:

public class MyScript : MonoBehaviour, IDrag{ }


要检查MyScript脚本是否实现IDrag接口,请使用GetComponent函数。

IDrag idrag = gameObject.GetComponent<IDrag>();
if (idrag != null)
    Debug.Log("Implemeted IDrag");
else
    Debug.Log("DID NOT Implement IDrag");

08-06 01:22