我对于当请求的组件未附加到对象时,
在这个例子中,我的游戏对象没有附加
为什么返回值不是
编辑: 这里是代码和调试器中的值的完整截图。 另一个编辑:
Unity是否已经重载了
GetComponent
的返回值感到困惑。根据Unity文档,GetComponent
应该返回null值。然而,实际发生的情况是GetComponent
返回请求类型的“null”对象,而非值null
。在这个例子中,我的游戏对象没有附加
CircleCollider2D
。当我在行CircleCollider2D x = GetComponent<CircleCollider2D>();
上设置断点时,我得到这个结果。为什么返回值不是
null
?编辑: 这里是代码和调试器中的值的完整截图。 另一个编辑:
Unity是否已经重载了
==
运算符,使得GetComponent
总是返回一个对象,但该对象可以具有内部的“null”状态,并且与null
进行比较时返回true?我可以在UnityEngine
命名空间中看到以下声明。public static bool operator ==(Object x, Object y);
public static bool operator !=(Object x, Object y);
CircleCollider2D x = GetComponent<CircleCollider2D>();
我把它放在我的Awake
方法里。我在那一行上打了一个断点,截图是在跨过那一行后从本地窗口中获取的。 - Ben Rubinx.GetType()
返回什么?而且,说真的,随着你在问题中添加更多的代码,这个过程会变得更加容易。 - mjwillsCircleCollider2D
是一个结构体还是一个类?你能展示一下它的源代码吗(也许可以通过 https://www.jetbrains.com/decompiler/ 进行反编译)?http://answers.unity3d.com/questions/1243356/getcomponent-returns-null-however-comparison-to-nu.html 有帮助吗? - mjwills