【问题标题】:Unity WaitForSeconds not Working c#Unity WaitForSeconds 不工作 c#
【发布时间】:2015-06-14 03:52:03
【问题描述】:

我在 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 似乎不在控制台中。

注意:我尝试用我的恢复文件修复它,但问题仍然存在

好的!我解决了问题。timeScale 导致了问题。

遇到这个问题的人可以通过这个答案轻松解决

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

【问题讨论】:

  • 请按照本指南添加您的解决方案作为您问题的答案:stackoverflow.com/help/self-answer
  • 未来提示,不要为暂停项目操作 Time.timeScale。我已经吸取了教训,它做了一些时髦的事情。最好的办法是保存所有对象的状态,或者拥有一个模拟状态机的静态公共变量或类。如果是暂停状态(全局静态),则跳过 Update() LateUpdate() FixedUpdate() 中的内容。你明白了。

标签: c# time unity3d


【解决方案1】:

未来的提示,不要为暂停项目操作 Time.timeScale。我已经吸取了教训,它做了一些时髦的事情。最好的办法是保存所有对象的状态,或者拥有一个模拟状态机的静态公共变量或类。如果是暂停状态(全局静态),则跳过 Update() LateUpdate() FixedUpdate() 中的内容。你懂的。

【讨论】:

    【解决方案2】:

    我的解决方案是我重新设置,我重置 Time.timeScale,首先设置“0”,然后再次设置 1

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

    【讨论】:

    • 太棒了!现在您可以接受此答案作为您问题的答案。
    猜你喜欢
    • 1970-01-01
    • 2022-10-05
    • 1970-01-01
    • 2017-12-08
    • 2013-04-23
    • 2019-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多