gpt4 book ai didi

unity3d - 协程在启动、停止、再次启动后执行两次

转载 作者:行者123 更新时间:2023-12-02 03:11:13 25 4
gpt4 key购买 nike

我有一个协同程序,用于为光标设置动画。协程看起来像这样

private IEnumerator AnimateCursor(Vector2 targetScreenPoint)
{
while (true)
{
// Do animation stuff

Debug.Log(targetScreenPoint.ToString());
yield return null;
}
}

我第一次启动协程时一切正常。如果光标移动,我调用 StopCoroutine("AnimateCursor")停止协程,然后使用 targetScreenPoint 的新值再次启动协程参数。

当我再次启动协同程序时,动画光标仍绘制在其原始位置,Debug.Log打印 targetScreenPoint 的第一个和第二个值(这就是为什么我认为协程在每个更新循环中执行两次)。

如果我替换 StopCoroutine("AnimateCursor")StopAllCoroutines() ,它工作正常,协程第二次启动时,它只打印 targetScreenPoint 的第二个值。 .

有人知道这是怎么回事吗?

编辑:关于在调试器运行时光标仍在动画,我错了。我认为问题出在我的 StopCoroutine 上,但我不知道为什么。如果协程采用参数,是否有一种特殊的方法必须停止协程?

最佳答案

您需要使用 StartCoroutine("AnimateCursor", targetScreenPoint); - 字符串变化。

因为 StopCoroutine("AnimateCursor") 仅在您使用该字符串变体时才有效。

如果您使用 StartCoroutine(AnimateCursor(targetScreenPoint)); - IEnumerator 方差 - 那么您无法停止协程。

关于unity3d - 协程在启动、停止、再次启动后执行两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39933797/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com