Unity3d 当游戏处于“游戏模式”时,游戏对象将被丢弃;NullReferenceException对象引用未设置实例或对象;

Unity3d 当游戏处于“游戏模式”时,游戏对象将被丢弃;NullReferenceException对象引用未设置实例或对象;,unity3d,singleton,gameobject,Unity3d,Singleton,Gameobject,我有一个名为TimeManager的空对象。在对象上,我附加了以下脚本。然后我将文本UI游戏对象“MyTime”拖到文本计时器字段。当游戏不进行时,一切都会显示出来。当我点击“播放”时,对象变为未分配 如果在玩游戏时,我可以将“MyTime”拖到文本计时器,然后它就可以正常工作了。我不知道为什么当我按play时它会掉下来 public class TimeLeft : MonoBehaviour { public float myCoolTimer = 10; public Text tim

我有一个名为TimeManager的空对象。在对象上,我附加了以下脚本。然后我将文本UI游戏对象“MyTime”拖到文本计时器字段。当游戏不进行时,一切都会显示出来。当我点击“播放”时,对象变为未分配

如果在玩游戏时,我可以将“MyTime”拖到文本计时器,然后它就可以正常工作了。我不知道为什么当我按play时它会掉下来

public class TimeLeft : MonoBehaviour
{


public float myCoolTimer = 10;
public Text timerText;

public static TimeLeft instance = null;

void Awake ()
{
    if (instance == null) {
        instance = this;
    } else if (instance != this) {
        Destroy (this.gameObject);
    }

}

void Start ()
{
    timerText = GetComponent<Text> ();

}


public void Update ()
{
    //Timer
    myCoolTimer -= Time.deltaTime;
    timerText.text = myCoolTimer.ToString ("f2");

}
公共类时间限制:单一行为
{
公共浮动mycoltimer=10;
公共文本timerText;
公共静态TimeLeft实例=null;
无效唤醒()
{
if(实例==null){
实例=此;
}else if(实例!=此){
摧毁(这个游戏对象);
}
}
无效开始()
{
timerText=GetComponent();
}
公共无效更新()
{
//计时器
mycoltimer-=时间增量时间;
timerText.text=myoltimer.ToString(“f2”);
}

注意:我需要singleton,因为我在其他脚本中使用它。

TimeManager对象与保存文本组件的对象不同

void Start ()
{
    timerText = GetComponent<Text> ();
}
void Start()
{
timerText=GetComponent();
}
Start方法在与TimeManager相同的对象上查找文本组件,但找不到任何文本组件,因此它分配null

由于正在拖动组件,请从起点删除该行,或者检查该行是否为null并查找对象

void Start ()
{
    if(timerText != null){
       GameObject timerObject = GameObject.Find("TextObjectName");
       timerText = timerObject.GetComponent<Text> ();
    }
}
void Start()
{
if(timerText!=null){
GameObject timerObject=GameObject.Find(“TextObjectName”);
timerText=timerObject.GetComponent();
}
}