工作记录——unity使用协程 WaitForSeconds 后面代码不执行

出现场景

在一处页面跳出教程提示后使用协程,1s后允许关闭,yield 后面代码不执行

发生原因

yield return new WaitForSeconds 的等待时间和Time.timeScale有关,Time.timeScale 值为 0 时,会导致无法等待成功

解决办法

在不得不暂停的情况下可以使用以下代码:

        IEnumerator MyCoroutine() 
        {
            Debug.Log(1);

            float waitTime = 1;    //等待时间
            float t = 0;
            while (true)
            {
                if (t == waitTime) break;
                t += Time.unscaledDeltaTime;
                t = Mathf.Min(t, waitTime);
                yield return null;
            }

            Debug.Log(2);    //可执行
        }

2020.1.7补充

其实unity已经有有个封装好的类:

yield return new WaitForSecondsRealtime(1f);

 

你可能感兴趣的:(工作中踩坑)