マニュアル:アクション – オブジェクトプロパティの変更

この実行アクションでは、以下の 3 種類のデータを修正できます。

  1. オブジェクト変数 / スイッチ
  2. データベースデータ(プロジェクト全体の変数やスイッチを含む)
  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 で「ブースト移動」を有効にして、移動タイプを動的に変更する。
  • Sprite2DVisible プロパティを使って表示/非表示を切り替える。
  • HitCollision ノードの Disabled プロパティを設定して、当たり判定を無効化する。
  • データベースから取得した文字列データを使って、Label ノードのテキストを更新する。

親オブジェクトを対象とした場合の動作

親オブジェクトが選択されている場合のみ、システムはターゲットシーンのパスを確認しません
実際のシーンが指定されたものとは異なっても、プロパティが存在すれば動作します。
これにより、汎用的なダメージ検出器のような共有子オブジェクトを使用できます。


:warning: プロパティ変更の使用に関する重要な注意点

変更はインデックス順序に基づきます

Godot の設計により、このアクションはインデックスベースのターゲット指定を使用します。
つまり、「上から N 番目のプロパティ」を修正します。

順序を変更した場合(変数を削除したりノードを移動したりするなど)、既存のアクションが間違ったプロパティを指す可能性があります

シーンパスは自動更新されません

「ロックされたオブジェクト」または「指定されたオブジェクト」を対象とする場合、以下の操作を行うと:

  • シーンファイルを移動する
  • ファイル名またはそのフォルダ名を変更する

→ アクションが機能しなくなる可能性があります。

これは、パスが動的参照ではなくプレーンテキスト文字列として保存されているためです。
Godot はパスを自動的に更新しますが、ACTION GAME MAKER はこの場合、再帰的なループエラーを回避するために自動更新を行いません。