(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"我显然错过了显而易见的事。
答案 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;
}
}