この実行アクションでは、以下の 3 種類のデータを修正できます。
- オブジェクト変数 / スイッチ
- データベースデータ(プロジェクト全体の変数やスイッチを含む)
- ノードのプロパティ
それぞれについて以下で説明します。
1. オブジェクト変数 / スイッチ
オブジェクトの VariableSettings または SwitchSettings ノードで定義された変数やスイッチを修正できます。
ただし、以下の変数とスイッチは読み取り専用であり、変更できません。
| 種類 | 名前 |
|---|---|
| スイッチ | is_locked, is_touching_portal |
| 変数 | object_id, stayed_area_id, visible_direction, x_speed, y_speed, player_id, controller_id, taken_damage |
なぜこれらの読み取り専用変数 / スイッチが存在するのか?
これらは「変数/スイッチが変更された」などのリンク条件に必要です。
リンク条件ではノードのプロパティを直接監視できないため、内部変数/スイッチとしてミラーリングされています。
2. データベースデータ
以下のエントリを修正できます。
- ユーザーデータベース
- プロジェクト変数
- プロジェクトスイッチ
このアクションを通じてタイププリセットやサウンドデータベースにはアクセスできません。
「変数でレコードを指定」オプション
変数の値に基づいてレコード(行)を選択できます。
例えば、変数の値が 5 の場合、選択された列の 5 行目が対象となります。
使用例:
アイテムデータベースがあり、入手したアイテム ID に基づいて情報を表示したい場合、この機能を使えば、各 ID ごとに分岐させるのではなく、単一のステートですべてのアイテムを処理できます。
3. ノードのプロパティ
ACTION GAME MAKER が提供するノードだけでなく、あらゆるノードのプロパティを修正できます。
例:
MoveAndJumpSettingsで「ブースト移動」を有効にして、移動タイプを動的に変更する。Sprite2DのVisibleプロパティを使って表示/非表示を切り替える。HitCollisionノードのDisabledプロパティを設定して、当たり判定を無効化する。- データベースから取得した文字列データを使って、
Labelノードのテキストを更新する。
親オブジェクトを対象とした場合の動作
親オブジェクトが選択されている場合のみ、システムはターゲットシーンのパスを確認しません。
実際のシーンが指定されたものとは異なっても、プロパティが存在すれば動作します。
これにより、汎用的なダメージ検出器のような共有子オブジェクトを使用できます。
プロパティ変更の使用に関する重要な注意点
変更はインデックス順序に基づきます
Godot の設計により、このアクションはインデックスベースのターゲット指定を使用します。
つまり、「上から N 番目のプロパティ」を修正します。
順序を変更した場合(変数を削除したりノードを移動したりするなど)、既存のアクションが間違ったプロパティを指す可能性があります。
シーンパスは自動更新されません
「ロックされたオブジェクト」または「指定されたオブジェクト」を対象とする場合、以下の操作を行うと:
- シーンファイルを移動する
- ファイル名またはそのフォルダ名を変更する
→ アクションが機能しなくなる可能性があります。
これは、パスが動的参照ではなくプレーンテキスト文字列として保存されているためです。
Godot はパスを自動的に更新しますが、ACTION GAME MAKER はこの場合、再帰的なループエラーを回避するために自動更新を行いません。