Редактор зависает с Instantiate () в Unity 2019 - PullRequest
0 голосов
/ 26 марта 2020

В моей игре есть домашняя сцена и две игровые сцены (SceneA и SceneB). Редактор зависает при переходе из Home Scene в SceneA с помощью SceneManager.LoadScene ().

Итак, я проверил код SceneA. Затем я заметил, что редактор был заморожен в одном месте.

Следующий код предназначен для сцены A.

//SceneA Script

[SerializeField]
float range;
[SerializeField]
GameObject obj;

void Start()
{
    Spawn();
}

void Spawn()
{
    for (int i = 0; i < 99; i++)
    {
        Instantiate(obj, new Vector3(Random.Range(-range, range), 0.5f, Random.Range(-range, range)), Quaternion.identity);
    }
}

Если я удалю Spawn (), он не остановится. Но мне нужно создать 99 объектов obj. Внезапно он начал зависать, хотя это было сделано некоторое время go.

Кроме того, SceneB загружался нормально, пока не возникла эта проблема, но теперь, когда вы пытаетесь выполнить SceneManager.LoadScene (SceneB) после этой проблемы, он зависает.

Это ошибка Unity? Включена ли настройка проигрывателя? Причина, по которой SceneB не может быть прочитана, состоит в том, что существует проблема с завершением задачи редактора, когда она зависает в SceneA?

У меня действительно проблемы, потому что я не вижу никаких ошибок. кто-нибудь, помогите мне, пожалуйста.

1 Ответ

0 голосов
/ 26 марта 2020

Я вызвал эту проблему одной маленькой ошибкой. Возможно, этот вопрос бесполезен для тех, кто заморозил Unity с помощью SceneManager.LoadScene ().

Моя ошибка:

В скрипте произошла ошибка для объектов, созданных Instantiate ().

//freeze code
void Start()
{
     StartCoroutine("Load");
}
IEnumarator Load()
{
    yield return new WaitFOrSeconds(2);
    while(true)
    {
        //Something heavy processing
    }
}

Естественно замерзнуть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...