(摘) Godot 等待信息和协程 await

声明:内容源自网络,版权归原作者所有。若有侵权请在网页聊天中联系我

原文链接

await 关键字可以用来创建协程,会等待某个信号发出之后再继续执行下面的代码
例如,要暂停代码执行,直到到用户按下某个按钮后才能继续往下执行剩余代码,你就可以这样写:

func wait_confirmation():
	print("Prompting user")
	await $Button.button_up # Waits for the button_up signal from Button node.
	print("User confirmed")
	return true

此时 wait_confirmation 就会变成协程,调用方也需要对它进行 await:

func request_confirmation():
	print("Will ask the user")
	var confirmed = await wait_confirmation()
	if confirmed:
		print("User confirmed")
	else:
		print("User cancelled")

如果你不需要结果,直接异步调用就可以了,既不会阻止代码的正常运行,也不会让当前的函数变成协程:

func okay():
	wait_confirmation()

如果对不是信号和协程的表达式使用 await,则会立即返回对应的值,函数也不会将控制权转交回调用方:

func no_wait():
	var x = await get_five()
	print("This doesn't make this function a coroutine.")

func get_five():
	return 5

相关文章