[英]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.