Godot - yield - 另一种等待

yield和ts中的wait类似

当你需要等待函数某条语句或之前的信息执行完成时,就需要这种表达法

简单控制

func my_func():
   print("Hello")
   yield()
   print("world")

func _ready():
    var y = my_func()
    # Function state saved in 'y'.
    print("my dear")
    y.resume()
    # 'y' resumed and is now an invalid state.

其中yield暂停了world的输出,但并不能阻止上层嵌套函数的继续执行,所以得到的输出结果:

Hello
my dear
world

在没有yield的情况下,输出是完全不一样的顺序

与信号Signal的协同操作

code 说明
yield(get_tree(), "idle_frame") 下一帧恢复执行
yield(get_node("AnimationPlayer"), "finished") 动画AnimationPlayer播放完毕后继续执行
yield(get_tree().create_timer(5.0), "timeout") 暂停5秒后执行
yield(button_func(), "completed") 函数执行完毕后执行
yield($Button0, "pressed") 按钮点击后执行

父级函数等待子函数完成

func sub():
  yield(get_tree().create_timer(5.0), "timeout")
  print('sub complete')

func parent():
  yield(sub(),'completed')
  print('parent compelte')

结果为:

sub complete
parent compelte

https://docs.godotengine.org/en/3.1/getting_started/scripting/gdscript/gdscript_basics.html?highlight=yield

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容