2015-04-08 9 views
3

Я столкнулся с проблемой в Unity. Я ничего не меняю в своем сценарии или сцене, но сама проблема. Я смущен, а также не работают и аниматоры. Когда я перезагружаю сцену с помощью кнопки, все сценарии, элементы и аниматоры прекрасно работают.Unity WaitForSeconds не работает C#

void Start(){ 
     if (PlayerPrefs.GetString ("Intro") == null || PlayerPrefs.GetString ("Intro") != "1") 
      Application.LoadLevel ("dragonIntro"); 

     if (PlayerPrefs.GetInt ("Ads") == null) 
      PlayerPrefs.SetInt ("Ads", 0); 

     Screen.sleepTimeout = SleepTimeout.NeverSleep; 
     if(PlayerPrefs.GetString("language")==""){ 
      PlayerPrefs.SetString("language",Application.systemLanguage.ToString()); 
      Application.LoadLevel(Application.loadedLevel); 
     } 
     Debug.Log ("test"); 
     StartCoroutine(rainMe()); 

} 




IEnumerator rainMe(){ 
     Debug.Log ("test2"); 
     float myWait = Random.Range(3f,6f); 
     Debug.Log ("test3"); 
     yield return new WaitForSeconds(myWait); 
     Debug.Log ("test4"); 
     isRain = 0; 
     SendMessage("lightMe"); 
    } 

Тест4 не отображается в консоли.

Примечание: Я пытался исправить мои файлы восстановления, но проблема продолжает

OK! Я решил проблему. TimeScale вызвала проблему.

Кто будет сталкиваться с этой проблемой может решить легко этот ответ

void Start(){ 
     Time.timeScale= 0; 
     Time.timeScale = 1; 
} 
+1

Пожалуйста, добавьте свое решение в ответ на ваш вопрос, в соответствии с настоящим ориентиром: http://stackoverflow.com/help/self-answer – Alex

+0

Будущий совет, не манипулируйте Time.timeScale для приостановки элементов. Я усвоил этот урок сложным путем, он вызывает некоторые напуганные вещи. Лучше всего сохранить состояние всех объектов или статическую общедоступную переменную или класс, который эмулирует конечный автомат. Если приостановлено состояние (глобальное статическое), пропустите содержимое в Update() LateUpdate() FixedUpdate(). Вы получаете дрейф. – ApolloSoftware

ответ

1

Мое решение является то, что я relased, что сбросить Time.timeScale, во-первых, установить «0», а затем снова установить 1

void Start(){ 
     Time.timeScale= 0; 
     Time.timeScale = 1; 

} 
+1

Отлично! Теперь вы можете принять этот ответ как ответ на свой вопрос. – Alex

1

Будущий наконечник, не манипулируют Time.timeScale для элементов паузы. Я усвоил этот урок сложным путем, он вызывает некоторые напуганные вещи. Лучше всего сохранить состояние всех объектов или статическую общедоступную переменную или класс, который эмулирует конечный автомат. Если приостановлено состояние (глобальное статическое), пропустите содержимое в Update() LateUpdate() FixedUpdate(). Вы получаете дрейф.

Смежные вопросы