MissingReferenceException при перезагрузке сцены с помощью горячей клавиши - PullRequest
0 голосов
/ 16 апреля 2019

У меня есть простая настройка сопрограммы постепенного появления / исчезновения, когда уровень загружен / завершен.Выглядит это так:

Image panel = GameObject.FindWithTag("FadePanel").GetComponent<Image>();
for (float o = 1; o > 0; o -= 0.05f) {
    var colour = panel.color;
    colour.a = o;
    panel.color = colour;
    yield return null;
}

Цикл for изменен для процедуры затухания.

Этот код прекрасно работает при загрузке нового уровня, даже при загрузке того же уровня после того, как он былзавершено, что ничем не отличается от перезагрузки.Однако мой ускоритель отладки F3 + A, который перезагружает текущий уровень, вызывает исключение MissingReferenceException при установке цвета изображения.

Изображение является частью префаба плеера, который я предварительно загружаю в сцену.

Это код, который я считаю релевантным (Предположим, все вызовы сопрограмм верны):

void Update() {
    if (Input.GetKey(/*F3 + A*/)) {
        FadeAndLoad(currentLevel);
    }
    if (/*Touching end box*/) {
        FadeAndLoad(nextLevel);
    }
}

IEnumerator FadeAndLoad(string nextFile) {
    // Fade out loop
    LoadLevel(nextFile);
}

IEnumerator LoadLevel(string levelFile) {
    currentLevel = levelFile;
    SceneManager.LoadSceneAsync(1);
    // Wait for loading to complete.
    Scene levelScene = SceneManager.CreateScene("Level");
    // Do some stuff with the file
    SceneManager.MoveGameObjectToScene(Instantiate(PlayerObject, /*Data from the file*/), levelScene);
    // Do some more stuff with the file
    SceneManager.SetActiveScene(levelScene);
    SceneManager.UnloadSceneAsync(1);
    // Fade in loop
}
...