为什么我的场景无法完成加载Unity?

时间:2019-11-05 10:44:02

标签: c# unity3d game-development scene-manager

嗨,我目前正在Unity中开发游戏,由于某种原因,我遇到了一个小问题,我正在创建的第四个场景(第3级)被卡住并且无法完成加载,从而阻止了我的游戏从场景2过渡(第3级) 2)到场景3(级别3)。我有一个Scenemanager脚本来管理这些过渡,除了上面说明的情况外,它还适用于所有其他场景过渡。有人知道我在做什么错吗?在下面,您将看到负责处理场景过渡的代码:

这是我的scenemanager脚本,负责附加地加载和卸载场景:

public static class MySceneManager
{

    private static int lastLoadedScene = 0;

    public static void LoadScene(int index, MonoBehaviour caller)
    {
        ObjectPooler objP = new ObjectPooler();
        objP.ReleaseAll();
        caller.StartCoroutine(loadNextScene(index));
    }

    private static IEnumerator loadNextScene(int index)
    {
        var _async = SceneManager.LoadSceneAsync(index, LoadSceneMode.Additive);

        _async.allowSceneActivation = false;
        while (_async.progress < 0.9f)
        {

            yield return null;
        }

        _async.allowSceneActivation = true;

        while (!_async.isDone)
        {
            yield return null;
        }

        var newScene = SceneManager.GetSceneByBuildIndex(index);

        if (!newScene.IsValid()) yield break;


        SceneManager.SetActiveScene(newScene);


        if (lastLoadedScene >= 0) SceneManager.UnloadSceneAsync(lastLoadedScene);


        lastLoadedScene = index;

    }
}

这是我称为场景过渡的脚本:

public class HeartScript : MonoBehaviour
{
    int HeartEnter = 1;
    void Start()
    {
        DontDestroyOnLoad(this.gameObject);
    }

    void OnTriggerEnter2D(Collider2D other)
    {
        Scene scene = SceneManager.GetActiveScene();

        if (other.gameObject.CompareTag("White Ball"))
        {
            if (HeartIndicator.numOfHearts < 3)
            {
                Debug.Log("Entered COLLIDER");
                HeartIndicator.numOfHearts += 1;
            }

            if(scene.name == "Level 2" && HeartEnter == 1) 
            {
                MySceneManager.LoadScene(3, this);
                HeartEnter++;
            }

            this.gameObject.SetActive(false);

        }
    }
}

1 个答案:

答案 0 :(得分:2)

这可能是由于以下原因造成的:

  1. 场景3未添加到“构建场景”中。 enter image description here

  2. 或者持有共同例程脚本的游戏对象未激活。