【軽量】godot engine【無料】 part4 (891レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

817: 08/20(水)11:26 ID:8BIAqddk(1/2)調 AAS
# connect() の Callable とは?

Godot 4.x から connect() の仕様が変わり、シグナル接続時に Callable クラスを使うようになりました。

記述例(4.x):
button.connect("pressed", Callable(self, "_on_button_pressed"))

Callable は「あるオブジェクトの特定のメソッドを呼び出すための参照」を表すクラスです。
記述例のように connect() によるシグナル接続時に Calalble コンストラクタの第一引数に実行したいメソッドを持つオブジェクト、第二引数に実行したいメソッドを記述します。
これらの引数はそれぞれ第一引数はオブジェクト参照、第二引数はそのオブジェクトが持つメソッド名(文字列)となります。

Godot 4.x では以下のような 3.x の (target, method_name) 形式は廃止され、第2引数に Callable を渡すことが必須になりました。

記述例(3.x) ※4.x 非対応:
button.connect("pressed", self, "_on_button_pressed")

また上記の記述例(4.x)は以下のショートハンドでも記述可能です。

記述例( 4.x ショートハンドver.)
button.pressed.connect(self._on_button_pressed)

これは内部的に Callable(self, "_on_button_pressed") を生成します。
Godot 公式もこの「Signal プロパティ経由」の記述方法を推奨しており、
シンプルかつ Callable を意識せずに利用できるため、実務でもこちらを使うのが一般的です。
818: 08/20(水)11:28 ID:8BIAqddk(2/2)調 AAS
# なぜ Callable を経由するのか?

簡潔にまとめると、以下のメリットがあります。

1. 安全性(未定義メソッドを is_valid() で事前検出可能)
2. IDE 補完・リファクタリング対応(文字列指定ではできなかった恩恵)
3. 統一性(シグナル以外でも「関数参照」として利用可能)
4. 柔軟性(ラムダでシンプルに書ける)
5. 将来性(Godot 4.x 以降の標準記法)
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.027s