【发布时间】:2021-10-15 18:49:37
【问题描述】:
这是我的第一个问题,我猜一切都很清楚-
协程 (UnityC#) 中的循环行为不正确,或者我做错了什么!检查代码 cmets...
bool loop=true;
bool once=false;
IEnumerator Fun()
{
while (loop)
{
//those 3 lines must be repeated for the whole 2.5 seconds,am I right! but it only run once so why?
carRb.drag += .005f;
Debug.Log("Loop1:"+loop);
if (!once) //last rep. line
{
once = true;
yield return new WaitForSeconds(2.5f);
loop = false;
}
yield return new WaitForEndOfFrame();
}
yield return new WaitForSeconds(2f); //will run this line after 2.5s
Debug.Log("Loop2: "+loop); //will run this line and whats below after (2.5+2s)
carRb.drag = 25f;
carController.canControl = false;
Destroyed = true;
}
【问题讨论】:
-
如果你没有告诉我们你想做什么,我们怎么能告诉你你做错了什么?
-
请提供minimal reproducible example 清楚地表明您遇到的问题
-
我试图在 2.5 秒后结束 courotine 中的循环,它仅在 1 帧后结束
-
欢迎来到 SO。请原谅这里的巨魔,最近似乎有一种文化,即向那些提出合理问题但没有 100% 遵守规则的人发起攻击。要在特定时间后结束循环,您只需要在循环内添加一个计时器变量并添加 2.5 秒。当它达到您的阈值时,循环应该退出。将
While (loop)更改为While (myTimer < 30)或您选择的任何时间。上面的评论是对的,问题的格式是:stackoverflow.com/help/minimal-reproducible-example -
谢谢@Absinthe