问题很明显。 yield break 和 stop coroutine () 的工作原理一样吗?如果是,那有什么区别?
作用一样,但不是一回事
yield break
将结束枚举器,因为它表示迭代已完成。 yield break
作为枚举器中的最终语句可以被认为等同于枚举器函数末尾的 goto
。
Unity 协程使用枚举器框架,但任何返回
IEnumerator
的函数都可以是迭代器,您不需要使用协程来获得此行为。只有当您使用迭代器方法作为参数调用 StartCoroutine
时,它才会成为协程。
Couroutne 只是一个附加到 monobehabiour 的迭代器,每次更新都会调用
MoveNext
一次。
调用
StopCoroutine
因此,只需告诉单一行为停止调用 MoveNext
并处理迭代器。
那么为什么有两种方法可以做到这一点?因为他们有不同的用例。
yield break
只能在协程(枚举器)内部调用,StopCoroutine
可以在协程外调用。