こんにちは、
-
OS: Windows 11
-
CPU: i7-13700k
-
GPU: RTX 3060 12G
-
メモリ容量: 64GB
-
症状: これはバグなのか、意図された動作なのかはわかりません。BaseSettings と VariableSettings に格納されたプロパティが、すべてのインスタンス間で同じリソースを参照しているように見えます。その結果、1 つのインスタンスに対して行った変更が、すべてのインスタンスに影響してしまいます。
-
再現手順: ゾンビ NPC シーンがあると仮定します。このゾンビをメインシーンに複数インスタンス追加し、そのうちの 1 つの HP のみを変更しようとすると、すべてのゾンビ(元の親ゾンビシーンを含む)の HP 値が変更されてしまいます。
これでは、同じ NPC のわずかなバリエーションを作成することが困難です。1 つのインスタンスを調整したい場合(例:あるゾンビの HP を増やすなど)、現在は完全に新しいシーンやゲームオブジェクトを一から作成する必要があり、効率的ではありません。
この動作に対する推奨される回避策はありますか?あるいは、これらの設定をインスタンスごとに固有のものにする方法はありますか?
ありがとうございます!
Baz
2
こんにちは!
好奇心から伺いますが、インスタンスの複製は CTRL+D または右クリックの「複製」で行っていますか?もしそうであれば、複製を削除し、代わりに以下のいずれかの方法でシーンを実体化してください。
- ファイルシステムからシーンをドラッグ&ドロップする
- 配置したいノードを右クリックし、「子シーンをインスタンス化」をクリックする
残念ながら、Godot のリソースプロパティは複製時にデフォルトで共有されます。ビジュアルスクリプティングではこれを回避する方法を提供していますが、オブジェクトをシーン上に配置する際には回避方法がありません。
上記のすべての方法を試しましたが、結果は同じです。
問題は、変数設定に「ローカルにシーン」オプションが付属していることです。このオプションを使用しても結果は変わりません。「ローカルにシーン」オプションは機能しません。変数は… 変数ではありません… 
私の理解では、それらの変数は実行時に一意になります。しかし、エディター内で個別に変更できないのであれば、その意味は何でしょうか?
Baz
4
「ローカルにシーン」のチェックを外して試しましたが、それでも発生しましたか?私が「Bazelot Quest」のサンプルを作成した際、森のレベルでゾンビを複製しても正常に動作しました。ただし、そのオプションはチェックしていませんでした。
私もあなたのレポートを再現しようと試みましたが、できませんでした。
以下の手順で問題を再現できますか?
- 新しいオブジェクトを作成します。何も変更を加えないでください。
- FileSystem タブからそれをシーンにドラッグします。Test1 のような名前を付けます。
- FileSystem タブから 2 つ目のインスタンスをシーンにドラッグします。Test2 のような名前を付けます。
- プロジェクトを保存して再開します。
- Test1 の変数を編集します(例:max HP を 10 に設定)。
- Test2 オブジェクトに切り替え、max HP 変数が変更されているか確認します。

以下が例です。親シーンも変更されました。「シーンにローカル」がチェックされていてもされていなくても、同じ現象が発生します。
HP についても同様の現象が発生します。プロジェクトを閉じて再度開いてみましたが、解決しませんでした。
Steam からダウンロードした Action Game Maker v1.0.12.stable [861d96a50] を実行しています。
Baz
8
はい、これで状況がより明確になりました。確認して、これが意図した動作かどうかを確認します。
それまでの間、セットアップ状態では、ChangeObjectProperty を使用して変数を「インスタンスに適用」し、配置するシーンでそのアクションを個別に設定することで、共有されなくなります(ただし、複製はできません):
「いいね!」 1
HP でも任意の変数でも動作します。本当に本当に本当にありがとうございます!!! これですべてが変わります。
「いいね!」 2
Baz
10
良い知らせです!編集可能な子要素を使用する際、Sw/Var 設定ノードが一意になるように修正されています。どのパッチでリリースされるかは不明ですが、ご注目ください。
「いいね!」 1
ありがとうございます!アップデートの実施が待ち遠しいです。
「いいね!」 1