GDScriptにおけるドルマーク"$"の意味と使い方 | Godot Engine

GDScriptにおけるドルマーク$の意味と使用方法の備忘録です。


はじめに

Godot Engineを触り始めた頃、以下のようなGDScriptコードの意味が分かりませんでした。

var sprite = $Sprite

ドルマーク$がGoogle検索で引っ掛からないこともあり、暫くドキュメントを探し回ったものです。

今回は、GDScriptにおけるドルマーク$get_node()の略記であることと、その使い方の備忘録を書きます。


ドルマーク$get_node()の略記である

GDScriptにおいて、ドルマーク$get_node()の略記を意味します。

以下ドキュメントの引用です。

Literal Type
$NodePath Shorthand for get_node("NodePath")

このようにget_node("NodePath")$NodePathとして表記することができます。

※ドルマーク$略記が開発された経緯は、こちらのissueで見ることが出来ます:
Shorthand for get_node() · Issue #4309 · godotengine/godot · GitHub


それでは、いくつかの基本的な使い方を見ていきます。


使用例

子Nodeの取得

通常の子Nodeの取得は、次のように行います。
f:id:BioErrorLog:20200724103534p:plain

var node = $ChildNode


ただし、Node名にスペースや$#などの特殊文字を含む場合は、ダブルクォーテーション""またはシングルクォーテーション''で囲む必要があります。

var node = $"Child Node"


また子Node以降の孫Nodeは、パスを指定することで取得できます。
f:id:BioErrorLog:20200724104958p:plain

var node = $ChildNode/GrandChildNode


親Nodeの取得

親Nodeは、次のように取得できます。
f:id:BioErrorLog:20200724105920p:plain

var node = $".."

親のパスを意味する .. を利用しています。
$.で始まるパスを与える場合は、ダブルクォーテーション (or シングルクォーテーション)で囲む必要があります。

※なお、get_parent()でも同様に親Nodeを取得できます。


同階層Nodeの取得

同階層のNodeは、親Nodeから辿ることで取得できます。
f:id:BioErrorLog:20200724111900p:plain

var node = $"../FrendNode"


自Nodeの取得

自Nodeは、以下で取得できます。
f:id:BioErrorLog:20200724115010p:plain

var node = $"."

現在パスを意味する . を利用しています。


絶対パスでの取得

rootからの絶対パスでNodeを取得するには、次のようにします。
f:id:BioErrorLog:20200724114014p:plain

var node = $"/root/Node0/Node1"

/rootから始まる絶対パスを指定することで、該当のNodeを取得できます。
$/で始まるパスを与える場合、ダブルクォーテーション (or シングルクォーテーション)で囲む必要があります。


おわりに

以上、Godot Engine: GDScriptにおけるドルマーク$の意味と使用例を整理しました。

私自身、Godot Engineは触り始めたばかりです。
まだ使いこなせてはいない状態ですが、UnityやUnreal Engineに比べてシンプルな哲学・使用感が気に入っています。

これからも、折を見て初心者としての軌跡を残していく所存です。


参考

GDScript basics — Godot Engine (stable) documentation in English

Shorthand for get_node() · Issue #4309 · godotengine/godot · GitHub

godot/gdscript_parser.cpp at 95cfa9bf74774110ba01a3987a22c9d7d616c1c6 · godotengine/godot · GitHub