协程循环在 unity3d 运行 时间冻结
Coroutine loop freezes on unity3d run time
这是我的 unityScript 代码,它有一个简单的协程循环。此代码在编辑器测试中运行良好,但在移动设备 phone 和实时测试中,如果您想转到主菜单并再次返回进行倒计时,计数器会冻结。
换句话说,你从 1 级 => 2 开始(每件事都 运行 非常好)之后 2=>1 并且当你再次进入 2 级时倒计时将冻结在第一个数字!
function Start () {
StartCoroutine("DoSomething");
}
-
function DoSomething () {
for (var i = 5; i >= 0; --i) {
print("Future : \n" + i);
yield WaitForSeconds(1);
print("counting : \n " + i);
}
}
为什么这段代码应该第一次运行而第二次冻结?
你需要return最终控制你的产量,试试这个:
function DoSomething () {
for (var i = 5; i >= 0; --i) {
print("Future : \n" + i);
yield WaitForSeconds(1);
print("counting : \n " + i);
}
yield return null;
}
这是我的 unityScript 代码,它有一个简单的协程循环。此代码在编辑器测试中运行良好,但在移动设备 phone 和实时测试中,如果您想转到主菜单并再次返回进行倒计时,计数器会冻结。 换句话说,你从 1 级 => 2 开始(每件事都 运行 非常好)之后 2=>1 并且当你再次进入 2 级时倒计时将冻结在第一个数字!
function Start () {
StartCoroutine("DoSomething");
}
-
function DoSomething () {
for (var i = 5; i >= 0; --i) {
print("Future : \n" + i);
yield WaitForSeconds(1);
print("counting : \n " + i);
}
}
为什么这段代码应该第一次运行而第二次冻结?
你需要return最终控制你的产量,试试这个:
function DoSomething () {
for (var i = 5; i >= 0; --i) {
print("Future : \n" + i);
yield WaitForSeconds(1);
print("counting : \n " + i);
}
yield return null;
}