他シーンからシグナルを送る方法
同じシーンの中でシグナルを送る
godotでは、操作キャラのシーン、ユーザインタフェイス(UI)のシーン、といった形で、各部品を作成し、それを集めて一つのゲームを作ります。(例:操作キャラシーンに何かがぶつかったら、操作キャラのHPにダメージを与える)
そうしたときは、以下のように、シグナル、という機能を使います。
①操作キャラのエリア(Area2D)に、何かが侵入したら、というシグナル。
このシグナルをダブルクリック、処理を記載するプログラムを選ぶと・・・
そこに、行いたい処理を記載できる(左側に緑色のシグナル入口マークができます)
例えば、UIシーンで装備を変更したら、操作キャラシーンの装備を変更する、ということをしたい場合、どうすれば良いのか、わかりませんでした。
探してみると、以下の記事の場合、別のシーンをインスタンスにしてシグナルを送る、という方法を教えてくれます。
https://anogame.net/godot-emit-signal-other-scene/
ただ、自分の場合、UIシーンはどこでも使いたい物で、メインキャラのインスタンスとして生成したくはありませんでした。UIシーンを自動読込にしていたからか、インスタンスにせずに、実装できました。
①UIシーンは自動読込にしてある(プロジェクト->プロジェクト設定)
②UIシーンのスクリプト(inventorywep)で、装備変更時にシグナル(wep_changed)を出力するようにする。
1.変数の宣言の箇所で、シグナルを宣言
2.装備変更の処理の箇所で、シグナルを出す(エミット)
③操作キャラスクリプト(Nezumi)に、シグナルをつなげ、後続の処理を記載。
1.操作キャラスクリプト(Nezumi)のready関数内で、
UIシーンのスクリプト(inventorywep)のシグナル(wep_changed)と、
操作キャラのスクリプトの関数(wep_load)をつなげるコマンドを記入
コメント
コメントを投稿