Godot4.xのGDScriptでのアノテーションを調べる
2023年3月2日、Godot4.0の安定稼働版がリリースされました。これに伴いGDScriptも更新が発生しています。
個人的には”onready”キーワードがエラーにしまったことに驚いていました。これはなぜかというと、Godot4.0からはonreadyはアノテーションを使った記載をする必要があるためです。
せっかくなので、この機会にGDScript4.xでのアノテーションについて一通り調べてみました。
Godot4.0のGDScriptで登場するアノテーション
Godot4.0のGDScriptにおいて、使用できるアノテーションは以下の通りです。(※2023年3月現在)
- @onready
- @export, @export_xxx
- @tool
- @warning_ignore
- @icon
- @rpc
これらを一つずつ解説していきます。
@onready
まず、最初に書いた通り、新しいGodot4.0のGDScriptにおいては、”onready”キーワードはそのまま記載するとエラーになってしまいます。
こちらについては、これまで”onready”を冒頭につけていたものを”@onready”に差し替えることでエラーを解消できます。
# Godot3.xまでの書き方は以下
# onready var buttonA = get_node("ButtonA")
# Godot4.0からは以下のように書く
@onready var buttonA = get_node("ButtonA")
※onreadyについては以下の記事で説明しています。
@export, @export_xxx
同じく、メンバ変数をプロパティエディタ上で編集できるようになる、export系のキーワードもアノテーションで記載するようになりました。
また、型の宣言が必須となり、変数名の後にコロンをつけて型を宣言するようになりました。
その他export_xxx系のアノテーションも含めるとかなりの数になります。いくつか例を挙げていくと、以下のような感じになります。
# Godot3.xまでの書き方
# export var number = 5
# export(int) var number
# ------
# Godot4.0からは以下のように書く
@export var number1:int
@export var number2:int = 5 # デフォルト値を定義する場合
# 以下のように様々な型で宣言が可能
@export var character_face:Texture
@export var scene_file:PackedScene
@export var resource:Resource
@export var color:Color
# ------
# ここから@export_xxx系のアノテーション
@export_color_no_alpha var dye_color : Color # 透明度を除いてカラーパレットから色を選択
@export_dir var sprite_folder_path: String # ディレクトリの選択
@export_enum("Warrior", "Magician", "Thief") var character_class: int # enumからの選択
@export_exp_easing var transition_speed # イージング設定
@export_file var sound_effect_path: String # ファイルの選択
@export_flags("Fire", "Water", "Earth", "Wind") var spell_elements = 0 # ビットフラグのリストからの選択
@export_group("Racer Properties") # 後続のexportをグループ化する
@export var nickname = "Nick"
@export var age = 26
@export_group("", "") # グループ化を解除する
@export var ungrouped_number = 3
上記以外にもexport関連のアノテーションは多数存在します。Godotの公式ドキュメントに記載があるので確認してみると良いかと思います。
GDScript — Godot Engine (latest) documentation in English
@tool
エディタ上でコードを実行することができるtoolキーワードもアノテーションで記載する形となりました。
こちらはGodot3.xまではスクリプトファイルの先頭に”tool”と記載していましたが、Godot4.0では記載するキーワード”@tool”となりました。
@warning_ignore
Godot3.xまでは #warning-ignore:警告ID という特殊なコメント行を挿入することで警告を表示させないようにすることができました。こちらがGodot4.0からはアノテーションで実現するようになりました。
@warning_ignoreアノテーションをつけると、通常であればwarningとなってしまうコードでもwarningを表示させないようにすることができます。
func test():
print("hello")
return
@warning_ignore("unreachable_code")
print("unreachable") # このコードの警告が表示されなくなる
注:こちらのアノテーションですが、実際に試してみたところ、警告が非表示となりませんでした。
(現在のバージョンの不具合なのか、私の使い方が良くないのか…)
こちらについて何か進展があったら後で追記します…
@icon
GDScriptにて独自のクラスを定義する際、スクリプトファイル内でクラスを定義するコードより前に@iconアノテーションを記載すると、そのクラスのアイコン画像を設定することができます。
@icon("res://icon.png")
class_name SampleClass
extends Node
上記のように記載すると、SampleClassクラスのエディタ上でのアイコン画像はプロジェクトフォルダ直下のicon.pngとなります。例えば、Nodeの新規作成時、SampleClassのアイコン画像は@iconで指定した画像ファイルのものとなります。
@rpc
マルチプレーヤーのゲームの制御に使用するRPC(リモートプロシージャコール)関連もアノテーションをつけて記載することができるようになったようです。
が、こちらは私の理解が未習熟のため詳細がわからず…理解できてきたら記事を作りたいと思います。
まとめ
Godot4.0のGDScriptのアノテーションを調べてまとめてみました。
他のプログラム言語と同じような感覚でアノテーションを使ってスクリプト内に各種性質を付与していくことができるので、以前のバージョンと比べても、分かりやすくなったんじゃないかなと思います。
とはいえ、まだまだ理解不十分なところもあるので、引き続き使いながら要領を掴んでいきたいと思います。