繁体   English   中英

访问单例返回 (NullReferenceException)

[英]Accessing a Singleton returns (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!");

}

作为一个“简单的人”,我显然错过了显而易见的事情。

您不会在任何地方实例化instance 你需要类似的东西

private static PlayerNodePosition playerNodePosition;
public static PlayerNodePosition instance
{
    get 
    {
        if (playerNodePosition == null) {
            playerNodePosition = new PlayerNodePosition();
        }
        return playerNodePosition;
    }
}

方法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;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM