LoadScene始终在编辑器中工作,但仅在Build:Unity的首次播放中起作用

时间:2019-03-23 20:09:39

标签: c# unity3d

LoadScene可在Unity编辑器中正常工作。 在“构建”中,可以根据需要正确加载场景1、2和3,但不会从3重新加载1或2。

最初,我有一些实用程序脚本作为具有静态功能的非单行为类。 SceneManagement脚本就是其中之一。 如上述问题所述,一切正常(或不正常)。

一切都在编辑器中按预期工作,但在Build中,我只能到达场景3(EndMenu),而无法返回到场景1或2(分别是StartMenu和Match)

我刚刚将所有实用程序脚本更改为monobehaviour类,并在PreLoad场景中创建了DDOL Gameobject,并将我的实用程序脚本挂在其上。 我曾希望是由于我对访问非单类的缺乏了解导致了我以前从未遇到过的问题。 事实证明,使用场景中的所有脚本,我的脚本都无法正常工作。

LoadLevel.cs
Currently Monobehaviour script component on the DDOL Gameobject

public class LoadLevel : MonoBehaviour {

    public void LoadScene(int p_LevelIndex)
    {
        Debug.Log("Lead Level Called");
        SceneManager.LoadScene(p_LevelIndex, LoadSceneMode.Single);
    }
}
EndGameMenu.cs
Component of the Canvas Object in the game-over screen

public class EndMenuFunctionality : MonoBehaviour {

    // This is how I grab the various Utility scrips from the DDOL gameobject
    // Non of the Errors register in-editor
    private void Awake()
    {
        GameObject singleton = GameObject.Find("Singleton");

        if (singleton != null)
        {
            loader = singleton.GetComponent<LoadLevel>();
            statCarrier = singleton.GetComponent<GameStatCarrier>();
            display = singleton.GetComponent<DisplayUtility>();
            readWrite = singleton.GetComponent<DataIO>();
        }
        else Debug.LogError("EndMenu Cannot Find Singleton Scripts!");

        AssignStatValuesToDisplay();
    }

    // I added these string additions to the Button Functions so i could see in the build which functions are called.
    public void OnPressNewGame()
    {
        noDataWarning.text += "New Game Press Registered @ End Menu";

        PushCurentStatsToLast();
        loader.LoadScene(2);
    }

    public void OnPressReturnToMain()
    {
        noDataWarning.text += "Return Press Registered @ End Menu";

        PushCurentStatsToLast();
        loader.LoadScene(1);
    }
}

基本上,当我将这些实用程序脚本作为非Monobehavious脚本使用,并通过以下方式访问其静态功能时 ScriptName.FunctionName() 要么 如上图所示,所有脚本均在场景中并创建对象引用, 我不明白为什么Build中的LoadLevel脚本会加载: (Preload.scene),StartMenu.scene,Match.scene和EndMenu.scene 但随后拒绝从EndMenu.scene加载StartMenu.scene或Match.scene。

它可以在编辑器中正常工作。

如果有人可以告诉我我忽略了什么(无疑是简单的)错误,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

HUZZAR!

这是我该死的DataIO脚本!

由于某种原因,我从Json文件中写出内容阻止了程序的继续!

我注意到Build版本会等到Play停止后才将文件实际写入磁盘...

因此,我将返回该脚本的绘图板,看看是否可以使这款小巧的测试游戏“再来一次;”