Unity WaitForSeconds不工作c#

时间:2015-04-08 23:55:52

标签: c# time unity3d

我在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;
}

2 个答案:

答案 0 :(得分:1)

未来提示,请勿操作Time.timeScale以获取暂停项目。我用艰难的方式吸取了教训,做了一些时髦的事情。最好的办法是保存所有对象的状态,或者使用静态公共变量或模拟状态机的类。如果暂停状态(全局静态),则跳过Update()LateUpdate()FixedUpdate()中的内容。你得到漂移。

答案 1 :(得分:1)

我的解决方案是我重申了这一点,我重置Time.timeScale,首先设置" 0",然后再设置1

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

}