Почему моя сцена не загружает Unity?

Привет, я сейчас разрабатываю игру в Unity, и по какой-то причине у меня возникла небольшая проблема: четвертая сцена, которую я создаю (уровень 3), застревает и не завершает загрузку, что не позволяет моей игре перейти со сцены 2 (уровень 2) на сцена 3 (Уровень 3). У меня есть сценарий диспетчера сцен, который управляет этими переходами, и он отлично работает для всех других переходов между сценами, за исключением случая, описанного выше. Кто-нибудь знает, что я делаю не так? Ниже вы увидите код, отвечающий за обработку переходов между сценами:

Это мой скрипт менеджера сцен, отвечающий за аддитивную загрузку и выгрузку сцен:

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);

        }
    }
}

person Maurice Bekambo    schedule 05.11.2019    source источник
comment
возможно, потому, что вы установили gameobject.active в false, а затем он пытается запустить на нем совместную процедуру.   -  person BugFinder    schedule 05.11.2019
comment
@BugFinder Спасибо, человек, который, кажется, добился цели   -  person Maurice Bekambo    schedule 05.11.2019
comment
Перед добавлением проверьте описания тегов. Тег game-engine подходит только для вопросов о написании собственного движка, а не при работе с ним. Я бы также удалил Unity из заголовка, если бы мог, потому что это тег и уже отмечен в тегах, но ваш заголовок считается плохим (вероятно, дубликатом) Stack Overflow, что указывает на то, что вы не смотрели на возможные дубликаты.   -  person Draco18s no longer trusts SE    schedule 06.11.2019


Ответы (1)


Это может произойти из-за:

  1. Сцена 3 не добавлена ​​в «Сцены в сборке». введите описание изображения здесь

  2. Или игровой объект, содержащий сценарий совместной подпрограммы, не активен.

person Swati    schedule 05.11.2019