Unity - NullReferenceException:对象引用未设置为对象的实例

时间:2018-06-02 21:04:47

标签: c# unity3d

我有三个脚本; Player.cs控制玩家的移动,摄像机方向和碰撞触发事件,MainMenu.cs控制游戏中的所有菜单,UI.cs控制游戏中的所有UI

UI.cs我有以下方法;

public static void PrintSpooler(string target, string message)
{
    currentWrite = GameObject.Find(target).GetComponent<Text>();
    currentWrite.text = message;
} 

这是为了简化在屏幕上打印出来的过程,只需要一个我可以从程序中的任何地方调用的方法,我可以从“播放器”和“播放器”中进行操作。和&#39; MainMenu.cs&#39;。

MainMenu.cs中的来电看起来像这样;

public void Host()
{
    string localComputerName = Dns.GetHostName();
    IPAddress[] localIPs = Dns.GetHostAddresses(Dns.GetHostName());
    string hostMessage = "Game hosted at " + localIPs[3];

    Time.timeScale = 1;

    SceneManager.LoadScene("TestScene2");
    UI.PrintSpooler("GameKills", hostMessage);        
}

应该发生的事情是当玩家选择主持游戏时,它应该打印出游戏所在的IP地址,以便其他玩家可以加入游戏。实际发生的是我得到一条错误消息&#34; NullReferenceException:对象引用未设置为对象的实例&#34;它指向&#39; UI.cs&#39;中的一些代码。真正奇怪的是,如果你在&#39; MainMenu.cs&#39;中注释掉方法调用。允许游戏继续在&#39; Player.cs&#39;工程;

else if (other.GetComponent<Trap>())
{
    string killed = player + " killed by " + other.GetComponent<Trap>().Owner + "'s " + other.GetComponent<Trap>().name;
    UI.PrintSpooler("GameKills", killed);
}

据我所知,实质上是完全相同的呼叫,仅来自两个不同的位置。我认为正在发生的事情是,由于场景从一个名为&#34; JoinGame&#34;到&#34; TestScene2&#34; (这是玩家玩游戏的实际场景,Unity正在忘记代码对代码的哪一部分所做的工作。

但是,当然,我不能为我的生活弄清楚,所以如果你们能帮忙那就太棒了!随意请求澄清您需要的任何内容!

谢谢,伙计们!

0 个答案:

没有答案