C# 当我的变量在";中实例化时,为什么会出现NullReferenceException;“觉醒”;方法?
当我点击卡片以便移动它时,我一直会遇到这个错误 NullReferenceException:对象引用未设置为对象的实例 CardProspector.OnMouseUpAsButton()(位于Assets/u Scripts/CardProspector.cs:17) UnityEngine.SendMouseEvents:DoSendMouseEvents(Int32,Int32) 异常表示myC# 当我的变量在";中实例化时,为什么会出现NullReferenceException;“觉醒”;方法?,c#,unity3d,C#,Unity3d,当我点击卡片以便移动它时,我一直会遇到这个错误 NullReferenceException:对象引用未设置为对象的实例 CardProspector.OnMouseUpAsButton()(位于Assets/u Scripts/CardProspector.cs:17) UnityEngine.SendMouseEvents:DoSendMouseEvents(Int32,Int32) 异常表示myCardProspector类中的以下方法: override public void OnMo
CardProspector
类中的以下方法:
override public void OnMouseUpAsButton() {
Prospector.S.CardClicked(this); // line 17
base.OnMouseUpAsButton();
}
但是该变量应该由我的Prospector
类实例化,其相关部分如下所示:
public class Prospector : MonoBehaviour {
static public Prospector S;
...
...
// Use this for initialization
void awake() {
S = this;
}
...
...
}
Awake()区分大小写,永远不会在代码中调用。消息的这一部分给出了问题所在:
(at Assets/__Scripts/CardProspector.cs:17)
“:17”表示CardProspector.cs文件的第17行,翻译为以下行:
Prospector.S.CardClicked(this);
这意味着静态属性“S”为null——它还没有定义
因为“S”是在方法Awake()中定义的,所以在以任何方式引用属性“S”之前,都需要调用Awake()。我猜还没有调用Awake,所以S是空的。注意:提供一小段代码来演示问题有助于更好地解决so问题。正如所有的调试问题都是有用的技术一样…@Grantwiney在我看来不错-重新打开。注释将在10.后自毁。。9...