【发布时间】:2020-01-15 11:19:01
【问题描述】:
当我使用yield return null; 或任何其他返回类型时,我的协程结束。我有for 循环以间隔打印所有字母,但是当我执行yield return IEnumerator 协程结束时
但如果没有yield,它可以正常工作。
这里是代码
public Text text;
Animation anim;
public Coroutine cor = null;
private bool corR = false;
public float timing = 0.0f;
public void ChangeText(string txt)
{
if (cor != null)
{
StopCoroutine(cor);
cor = null;
}
cor = StartCoroutine(__change(timing, txt));
}
IEnumerator __change(float time, string txt)
{
text.text = "";
for(int i = 0; i < txt.Length; i++)
{
text.text += txt[i];
yield return new WaitForSeconds(time);
}
corR = false;
}```
【问题讨论】:
-
你是如何开始你的协程的?
-
这里是启动协程的函数。 public void ChangeText(string txt) { if (cor != null) { StopCoroutine(cor);心=空; } cor = StartCoroutine(__change(timing, txt)); }
-
...当你说协程“结束”时——你的意思是它返回了吗?如果是这样,那是意料之中的。你的意思是
for循环的下一次迭代永远不会执行,即使在等待time秒之后? -
是的,在yield return循环之后再也没有执行过,这就是问题所在。
-
您是否尝试过将
timing设置为高于0.0的值?