访问Singleton返回(NullReferenceException)

时间:2017-10-04 16:01:48

标签: c# class singleton

我真的感到愚蠢,但我想我是在盲目盲目。从另一个经典调用时,我无法访问单例类方法。我得到了可怕的

(NullReferenceException异常)。

这里是我的简单单身人士以及我如何调用该方法。

public class PlayerNodePosition : MonoBehaviour 
{

public static PlayerNodePosition instance;

string code;

void Awake()
{
    if (instance == null)
    {
        Debug.LogWarning("More than one instance of Inventory found!");
        return;
    }

    instance = this;
}

public void AddCode(string _code)
{
    code = _code;
}
}

这是来自另一个脚本的调用者。

void AddCode()
{

    PlayerNodePosition.instance.AddCode("Added!");

}

成为" simpleton"我显然错过了显而易见的事。

2 个答案:

答案 0 :(得分:1)

您无法在任何地方实例化instance。你需要像

这样的东西
private static PlayerNodePosition playerNodePosition;
public static PlayerNodePosition instance
{
    get 
    {
        if (playerNodePosition == null) {
            playerNodePosition = new PlayerNodePosition();
        }
        return playerNodePosition;
    }
}

答案 1 :(得分:0)

方法Awake应该是静态的,并且应该设置实例。我没有机会检查这是否运行,因为我没有安装C#,但您提供的调试日志警告在逻辑上是错误的。如果没有实例,则需要创建一个实例。如果有实例,则返回该实例。这是单身人士模式。

public class PlayerNodePosition : MonoBehaviour 
{
    public static PlayerNodePosition instance;

    string code;

    void static getInstance()
    {
        if (instance == null)
        {
            instance = new PlayerNodePosition();
        }

        return instance;
    }

    public void AddCode(string _code)
    {
        code = _code;
    }
}