🎩

[Godot] GDScript Input Field Plugin を入れて、REPL として使う。

に公開

背景

シーンの実行中に使える REPL は Panku Console を使用しているんですが、Godotエディタ上で実行できる REPL を探していたら GDScript Input Field Plugin というのが触ってみてよかったので紹介です。

addon

https://godotengine.org/asset-library/asset/2246

概要

上記、GDScript Input Field Plugin をプラグインとして入れると、画面下部の出力パネルにテキストフィールドが追加されます。
新たなパネルを増やさず目立たないところが粋だなと思いました。

ここにテキストを入れて Enter を押下すると実行結果を取得できます。
Shift + Enter を押下すると、改行できるので複数行のコードも実行できます。

class_name で定義したクラスや、EditorInterface にもアクセスできます。

自分用の便利関数を定義

例えば、下記のような gdscript を用意します。

xxx/helper.gd
@tool
extends EditorScript
class_name Helper

func current() -> Node:
    return get_scene()

func hello():
    return 'Hello gdscript!'

出力パネルの入力欄で下記を実行し、変数として格納。

var helper = Helper.new()

すると、

helper.current().name
=> &"Example1"

helper.hello()
=> "Hello gdscript!"

のように呼べます。

変数 helper に入れた状態のまま、スクリプトを編集したり関数を増やしても動的に反映されます。(gdscript ってそういう仕様なんですかね。初めて知りました。)

EditorScript の実行は、通常 _run メソッドを定義して ctrl-shift-x で実行する(参考: https://docs.godotengine.org/ja/4.x/classes/class_editorscript.html )らしいんですが、上記プラグイン上で _run メソッド以外も普通に呼べるようになるので結構便利だなと感動しました。

Discussion