「Node」って大事っぽいけど正体がよくわからなかったので使ってみた

Node解説

Godotでは必須のノードを選ぶとき、一番上に出てくる「Node」。正直これの使い道が全然分かっていなかったので、パラメータを確認しておく。あんまり気にする必要なないというのが正直なところ。

新規ノード作成画面でNodeを検索した様子。Node2DやControl、Node3Dなど見覚えのあるノードがNodeの下にぶら下がっている
検索結果に並ぶNode2DやControl、Node3Dは、すべてこのNodeを大元にして枝分かれしている。

説明文には「Base class for all scene objects」と書いてある。Godotに出てくるノードは種類が違っても、たどっていけば最終的にこのNodeに行き着く。Nodeは、Godotのすべてのノードの一番の大元になっている土台のノードということ。

土台と言われてもピンと来なかったので、Nodeをひとつだけシーンに置いてみることにした。

シーンにNodeだけを配置して選択した状態。ビューポートには何も表示されていない
Nodeをシーンに置いて選択しても、ビューポートには何も表示されない。

ビューポートを見ても、Nodeを選んでも何も表示されない。文字通り見た目を持たないノードだということを確認した。次はGodotの編集画面の右のほうにあるインスペクターを覗いてみた。

NodeをシーンにひとつだけおいてインスペクターパネルにProcessやPhysics Interpolation、Auto Translate、Editor Descriptionなどの項目が並んでいる様子
見た目のないNodeだけを置いても、インスペクターにはProcess・Physics Interpolation・Auto Translate・Editor Descriptionといった項目が並ぶ。

見た目がないノードなのに、これだけの項目が並んでいるのは驚くというかちゃんと理解しなきゃいけないのかと心配になった。

中でも気になったのはProcess > Modeという項目。選択肢はInherit、Pausable、Always、When Paused、Disabledの5つ。AlwaysやDisabledは名前で何となく想像がつくが、Inheritだけは意味が分からなかった。「継承」という単語の意味だが、どうやらInheritは「親ノードのProcess Modeの設定をそのまま引き継ぐ」という意味だった。デフォルトのInheritのままにしておくと、親がポーズ中に止まる設定なら自分も止まり、親が動き続ける設定なら自分も動き続ける。PausableやAlwaysを指定すれば、親の設定を無視して自分だけの挙動を決められる。自分が一番親の時は…謎。

もうひとつ気になったのはPriorityという項目。数値が小さいほど早く処理される。複数のNodeが同時に存在するときの処理順を調整するための項目だ。ただ、実際にどのくらいの数値差でどう変わるのかは、今回の調査だけでは分からなかった。同じ数字の場合とかもどうなるのか、これから調査したい。

今回分かったのは、Nodeが画面に何も映らないただの空箱ではなく、処理のタイミングや順番を管理する仕組みを持ったノードだということ。ただ、Process ModeやPriorityを実際に変えるとどうなるのか、正直まだ想像できていない。これはたぶん、実際にゲームを作りながらポーズ画面を作ったり複数のNodeを動かしたりして、このパラメータをいじってみないと本当の意味では分からないんだろうなと思う。次はそれを試してみたい。

関連記事

コメント