シグナル発火を待ちたい!!
↓の記事で、シグナルが便利であることを紹介しています。
シグナルを使用していると、
「シグナル発火まで、処理を待ちたい。」
という場面に出くわすことが多々あります。
その時に、使用するのが、”await”です。
awaitで、シグナル発火を待つ
こちらのソースコードを見てください。
func _ready() -> void:
	# 10秒後にシグナルを発火
	await get_tree().create_timer(10.0).timeout
	print("Time Out!!")
このプログラムでは、起動後にTimerノードが、”timeout”シグナルを10秒後に発火するのを待った後に、
”print("Time Out!!")”
を実行しています。
では、↓のように、”await”を書かないでいると、どのようになるでしょうか?
func _ready() -> void:
	# timeoutを待たずに、すぐにシグナルを発火
	get_tree().create_timer(10.0).timeout
	print("Time Out!!")
これだと、10秒待つことなく、”Time Out!!”と表示されるようになります。
もちろん、”await”は、Timerノードだけでなく、すべてのシグナルに対して、使用できますので、ボタンが押されるまで待ってみたり、自分で作ったシグナルが発火するまで待つことができるのです。
このように、awaitは、プログラムの流れを制御するうえで、非常に便利な機能です。
ぜひ、活用してみてください。
 
  
  
  
  

コメント