Я подозреваю, что ваша ошибка может заключаться в том, что вы Destroy()
используете gameObject, прежде чем он сможет загрузить следующую сцену; вы получаете условие гонки на том, что финиширует первым; LoadScene или Destroy () - что объясняет, почему это иногда работает . Вы никогда не должны предполагать, что это ошибка в структуре, прежде чем понять вашу проблему.
Попробуйте поставить Destroy () после LoadScene () или с задержкой, чтобы понять, если это ваша проблема.
Кроме того, ваш LevelManager можно сделать статическим и не нужно наследовать от MonoBehaviour, поскольку он не использует функциональность gameObject.
public static class LevelManager {
public static void LoadLevel(string name)
{
print("Level loading requested for" + name);
SceneManager.LoadScene(name);
}
}
Используется при выполнении LevelManager.LoadLevel("MyLevel");
, но тогда вы можете задаться вопросом, что более эффективно, делать LevelManager.LoadLevel или SceneManager.LoadLevel, поскольку они будут делать то же самое.