【问题标题】:c# unity Renewing while loopc# unity 更新while循环
【发布时间】:2017-05-21 00:09:58
【问题描述】:

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

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

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

Myloop.execute = true;

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

【问题讨论】:

  • bool execute = true; 是您分配值的方式。
  • 一旦执行设置为 false。循环结束。为什么不在需要时再次调用 myLoop?

标签: c# while-loop unity5


【解决方案1】:

不,一旦 while 循环完成,它不会再次启动,直到您再次运行 Myloop() 函数:

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

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

通常代码是按同步顺序执行的,因此一次只执行一段代码。使用async/awaitTaskThread,您可以一次运行多段代码。如果您使用其中任何一种,您需要确保您正确地使用lock 代码段,以免出现任何竞争条件。

【讨论】:

    【解决方案2】:

    您混淆了=== 运算符,== 用于比较,而= 用于赋值。阅读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;调用方法。

    【讨论】:

      【解决方案3】:

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

      例如

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

      在你的需要完成之后,比 make doLoop false

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-07-17
        • 2012-09-09
        • 2018-08-17
        • 2013-01-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多