В Unity в настоящее время я получаю сообщение об ошибке, которого раньше не было, а если и было, то это не имело значения.
Всякий раз, когда я что-то уничтожаю и начинаю перезапускать уровень в своей игре, игра зависает на полпути к загрузке и выдает эту ошибку:
!IsDestroying()
UnityEngine.GameObject:AddComponent()
EggScript:OnDestroy() (at Assets/Scripts/GameScripts/EggScript.cs:85)
Функция, о которой идет речь:
void OnDestroy()
{
PlayerPrefs.SetInt("Game Paused", 1);
transform.parent.gameObject.transform.parent.gameObject.AddComponent<GameOverScript>();
}
Я удалил вызов PlayerPrefs без видимой пользы, но мне нужен другой вызов, чтобы фактически перезапустить уровень.
Другая ошибка, которая не имеет значения:
batchDelete.reservedObjectCount >= batchDelete.objectCount
Я не совсем уверен, где я это делаю, потому что то, над чем я работаю, представляет собой набор учебных пособий, но я не думаю, что это имеет отношение к этой конкретной ошибке.
Код GameOverScript приведен ниже (хотя это тоже не похоже на ошибку):
void Start()
{
GameManagerScript.Instance.pauseGame();
//gameObject.BroadcastMessage("saveScore", null, SendMessageOptions.DontRequireReceiver);
if (PlayerPrefs.GetString("curLevel") == "Tutorial" || PlayerPrefs.GetString("curLevel") == "Tutorial1" || PlayerPrefs.GetString("curLevel") == "Tutorial2")
{
//Do nothing
}
else
{
//We're in an infinite level, so we save the score
gameObject.BroadcastMessage("saveScore");
}
PauseScript.displayMenu();
//gameObject.AddComponent<FrontmostClickCheckerScript>();
//HighScoreManager._instance.SaveHighScore("You", (System.Int32)PlayerPrefs.GetFloat("LatestScore"));
HighScoreManager._instance.SaveHighScore("You", GameManagerScript.Instance.getScore());
}