c#unity在循环时更新

时间:2017-01-06 09:01:43

标签: c# while-loop unity5

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

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

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

Myloop.execute = true;

这足以重启循环吗?如果没有,我怎么能从另一个功能轻松的方式重新启动它?

3 个答案:

答案 0 :(得分: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;来调用该方法。

答案 1 :(得分:2)

不,一旦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段代码以避免任何竞争条件。

答案 2 :(得分:0)

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

对于前。

<?php 
        foreach ($date as $k => $v){ 
        echo "<li>".$v['day']." -    ".$v['start_time']." - ".$v['end_time']."</li>"; 
        } ?>

完成您的需求后,请将doLoop设为false