协程和产量

协程:一种计算机组件,它通过允许暂停和恢复执行来概括非抢占式多任务处理的子例程。
子程序:一组指令,旨在执行程序中经常使用的操作
要理解协程,我们需要知道顺序处理是如何工作的。

顺序处理

顺序处理按顺序逐行运行代码,从开始到结束按照接收到的顺序。
在 GDScript 中,除非另有说明(线程),否则您的代码会按顺序运行。
让我们看一下这个例子:

  1. func _ready():
  2. addHealth(10)
  3. print('finished!')
  4. func addHealth(lifePoints):
  5. print('lifePoints called!')

现在让我们看看代码是如何顺序运行的。
image.png
通常,代码是逐行运行的。函数内部有代码,需要先运行所有内容,如果调用了函数,只需片刻暂停。
这种情况下,_ready()除非调用了另一个方法,否则该方法将运行其块内的所有代码,在这种情况下,该块将暂停并移至新调用的函数(addHealth(lifepoints))。

如何使用协程

要使用协程,您将需要使用两种方法,yield方法和 resume方法。
该yield方法暂停一个函数,而该resume方法将继续产生的方法。

  1. func _ready():
  2. var pausedFunction = addHealth(10)
  3. print('finished!')
  4. pausedFunction.resume() # resume the addHealth call
  5. func addHealth(lifePoints):
  6. yield() # pause the function
  7. print('lifePoints called!')

image.png

学到更多

要了解有关 GDScript 上下文中的协程和 yield 的更多信息,请查看来自GDScript Dude的这一重要资源。