c# unity 更新 while 循环

c# unity Renewing while loop

我有一个带塞子的 while 循环:

public Myloop()
{ 
    bool execute == true;
    While (execute == true)
    {
        // do some stuff
        if (condidtion)
        {
            execute == false;
        }    
    }
}

我在另一个函数停止后调用:

Myloop.execute = true;

这足以重新启动循环吗?如果没有,我怎样才能从另一个功能简单地重新启动它?

您混淆了 === 运算符,== 用于比较,而 = 用于赋值。了解 C# Operators.

public void Myloop()
{
    bool execute = true;
    while (execute == true)
    {
        // do some stuff
        if (condition)
        {
            execute = false;
        }
    }
}

更简单的方法是使用 break,因为您不会返回 execute 字段的值。一旦满足条件,while 循环将终止。

while (true)
{
    // do some stuff
    if (condition) break;
}

并且您使用 Myloop(); 而非 Myloop.execute = true;.

调用该方法

不,while 循环完成后它不会再次开始,直到您再次 运行 Myloop() 函数:

public void RunLoopTwice(){
    MyLoop();
    MyLoop(); 
}

public void Myloop()
{
    bool execute = true;
    while (execute == true)
    {
        // do some stuff
        if (condition)
        {
            execute = false;
        }
    }
}

另外正常情况下代码是同步顺序执行的,所以一次只执行1段代码。使用 async/awaitTaskThread,您可以一次制作多段代码 运行。如果你正在使用其中的任何一个,你需要确保你正确地 lock 代码片段不会出现任何竞争条件。

您可以使用两个标志,但这段代码将 运行 在不同的线程上,因为这段代码将进入无限循环。

例如

public bool doLoop = true;
public bool doProcess = true;

public void MyLoop()
{
   while(doLoop)
   {
      while(doProcess)
      {
         // do some stuff
         if (condition)
         {
            doProcess = false;
         }
      }
    }
}

完成你的需求后,让 doLoop 为 false