Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当我的变量在";中实例化时,为什么会出现NullReferenceException;“觉醒”;方法?_C#_Unity3d - Fatal编程技术网

C# 当我的变量在";中实例化时,为什么会出现NullReferenceException;“觉醒”;方法?

C# 当我的变量在";中实例化时,为什么会出现NullReferenceException;“觉醒”;方法?,c#,unity3d,C#,Unity3d,当我点击卡片以便移动它时,我一直会遇到这个错误 NullReferenceException:对象引用未设置为对象的实例 CardProspector.OnMouseUpAsButton()(位于Assets/u Scripts/CardProspector.cs:17) UnityEngine.SendMouseEvents:DoSendMouseEvents(Int32,Int32) 异常表示myCardProspector类中的以下方法: override public void OnMo

当我点击卡片以便移动它时,我一直会遇到这个错误

NullReferenceException:对象引用未设置为对象的实例 CardProspector.OnMouseUpAsButton()(位于Assets/u Scripts/CardProspector.cs:17) UnityEngine.SendMouseEvents:DoSendMouseEvents(Int32,Int32)

异常表示my
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...