Onready
CoddyのGodotジャーニー「ノードとシーン」セクションの一部。レッスン 21/28。
毎フレームで$Face/Eyesを書くと、1秒間に60回ノードを探すことになります。一度だけ見つけて、変数に保持しておくほうがよいでしょう。
スクリプトの先頭にある変数は、ノードが作成されたときに作られます。子ノードはまだ接続されていないため、$Face/Eyesを使っても何も見つからず、Godotはゲームを開始しません。前に@onreadyを付けると、ノードが準備完了になったとき、つまり_ready()が実行される直前に、Godotが変数に値を設定します。
@onready var mouth = $Face/Mouth
func _ready():
mouth.position.y += 2その後は、スクリプト内のどの関数でも、mouthがそのノードを指します。
チャレンジ
簡単目が回るロボットを作りましょう。
- スクリプトの先頭で、目を変数に保持します:
@onready var eyes = $Face/Eyes。 _process()で、eyesを時計回りに、毎秒半回転(180度)させます。
「プレイ」を押すと、目が顔の中央をぐるりと回り、ロボットは静止したままです。その後、「確認」を押します。
自分で試してみよう
extends Node2D
func _process(delta):
pass
ノードとシーンのすべてのレッスン
自分で練習してみよう: Godotプレイグラウンド