🤖

【Godot】GDScriptのテンプレートの作り方と実例紹介

2024/12/23に公開

はじめに

Godotでスクリプト作成時のスクリプトの状態を設定できるテンプレートの作成方法をまとめます。

実例

独自テンプレートを使用して作成すると、このようになります

new_script.gd
# meta-name: 基本ノード
# meta-description: 基本のテンプレートです。

#*--------------- Extend ---------------*
extends _BASE_

#*--------------- Exported Fields ---------------*

#*--------------- Fields ---------------*

#*--------------- Events ---------------*
func _ready() -> void:
 pass


func _process(_delta: float) -> void:
 pass

#*--------------- Methods ---------------*

#*--------------- Signals ---------------*

ポイント

  • 変数、関数などの種類ごとに区切り付けて可読性上げる
    • シグナルの欄を一番下の方に用意しておくと、追加したときにいい感じに管理できる
  • よく使うイベントをデフォルトで用意

作り方

基本的には下記リンク先にある程度まとまっています。

https://docs.godotengine.org/ja/4.x/tutorials/scripting/creating_script_templates.html

  1. テンプレートディレクトリに移動する
  2. 対象のノード名のフォルダを作成する
  3. .gdファイルを作成する

ディレクトリに移動

ディレクトリは下記参照です。

実際のWindows端末だとこのようなパスです。

C:\Users\ユーザー名\AppData\Roaming\Godot\script_templates

対象ノードのテンプレート

対象のノードのテンプレートを作成したい場合、フォルダ名を対象のノードの名前にする必要があります。

alt text

テンプレートファイル作成

通常のGDScript同様、.gdファイルで作成します。

説明などの設定

ファイルの先頭に、テンプレートの作成に関する説明文などを指定することができます。
また、インデントのサイズの調整なども可能だそうです。

設定記法一覧

Template.gd
# meta-name: 基本ノード
# meta-description: 基本のテンプレートです。

適用されるとこんな感じになります。

alt text

プレースホルダー

基底クラスなどを指定できるプレースホルダーを利用することができます。

プレースホルダー一覧

template.gd
extends _BASE_

上記のように_BASE_を指定すると、ノードに対して「スクリプトをアタッチ」したときに、自動的にそのノード名を指定してextends できるようになります。

my_window.gd
extends Window

また、_CLASS_を使用すると、GDScriptのファイル名を自動的にパスカルケースでファイル名にしてくれます

new_script.gd
extends _BASE_
class_name _CLASS_

その他

プロジェクト用テンプレートの作成

プロジェクト限定で有効なテンプレートを作成することもできます。
プロジェクトのファイルシステムで、script_templatesフォルダを作成して、その中にフォルダ作成、ファイルで定義することで反映されます。

作成されたテンプレートは、「プロジェクト」の欄に表示されます。

alt text

テンプレート内で指定した型を削除する

GDScriptは動的型付け、静的型付けのどちらも半々くらいでサポートしています。
この仕様上、若干記法があやふやになりがちです。

そこで、テンプレート内に指定された戻り値などの型指定を削除することができる設定があります。
「型ヒントを追加」という設定をfalseにすることで、テンプレート内の型を削除することができます。

alt text

設定パス:text_editor/completion/add_type_hints

この状態で作成すると、戻り値のvoidなどが自動的に削除されます。
ただし、一部の型は対応できていないそうです…!

new_script.gd
extends Node

#*--------------- Events ---------------*
- func _ready():
 pass


- func _process(_delta):
 pass


# 引数の型がそのまま
- func _input(_event: InputEvent):
 pass


さいごに

テンプレートでラクしてスクリプトを作成して、効率的にGDScriptを作成しましょう~!

Discussion