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/await
、Task
或 Thread
,您可以一次制作多段代码 运行。如果你正在使用其中的任何一个,你需要确保你正确地 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
我有一个带塞子的 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/await
、Task
或 Thread
,您可以一次制作多段代码 运行。如果你正在使用其中的任何一个,你需要确保你正确地 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