我在Unity中遇到过一个问题。我没有改变我的脚本或场景中的任何内容,而是自己发生的问题。我很困惑,也是粒子和动画师也不行。当我通过按钮重新加载场景时,所有脚本,粒子和动画师都能很好地工作。
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");
}
Test4似乎没有出现在控制台中。
注意:我尝试使用我的恢复文件进行修复,但问题仍然存在
OK!我解决了这个问题.timeScale导致了这个问题。
谁将面对这个问题可以通过这个答案轻松解决
void Start(){
Time.timeScale= 0;
Time.timeScale = 1;
}
答案 0 :(得分:1)
未来提示,请勿操作Time.timeScale以获取暂停项目。我用艰难的方式吸取了教训,做了一些时髦的事情。最好的办法是保存所有对象的状态,或者使用静态公共变量或模拟状态机的类。如果暂停状态(全局静态),则跳过Update()LateUpdate()FixedUpdate()中的内容。你得到漂移。
答案 1 :(得分:1)
我的解决方案是我重申了这一点,我重置Time.timeScale,首先设置" 0",然后再设置1
void Start(){
Time.timeScale= 0;
Time.timeScale = 1;
}