変換済みの投稿です。ダッシュとセミコロンを削除し、複合語を分解しました。
BazChangeNodePropertyAction
シーン内の任意のノード(AGMakerオブジェクトでないノードも含む)に、modulate、visible、position、scale、text といった実際の型を持つGodotプロパティを設定します。
これはネイティブのChange Object Propertyの欠けていた半分のようなものです。Game Scene内部のノードや、名前付きノードからノードを取得できます。
私の活動を支えるために、パトロンになることを検討してください。 ![]()
ダウンロード:
BazChangeNodePropertyAction.gd (34.8 KB)
要件
AGMaker 1.3.0以上
インストール
BazChangeNodePropertyAction.gd(以下に添付)をダウンロードします。- プロジェクトの
custom_actions/フォルダに配置します。そのフォルダが存在しない場合は、プロジェクトのルートに作成してください。custom_actions/object/などのサブフォルダでも問題ありません。 - これだけです。Add Action ダイアログの Object / オブジェクト グループに表示されます。有効化などの追加操作は不要です。
機能
AGMakerの浮動小数点のみを対象とするプロパティ変更を拡張し、プロパティが実際に必要とする Color、Vector2、String、bool、または数値といった本来のGodotプロパティとその実際の型で設定できるようにします。
- 任意の型付きプロパティ。
modulate(Color)、position/scale(Vector2)、text(String)、visible/flip_h(bool)、z_index(int)、rotation(float)。値の型を選択すると、そのままノードに書き込まれます。 - 単一チャンネル。 特定の部分のみを変更するためにチャンネルを追加できます:
modulate:aはアルファのみを設定し、position:xはX座標のみを設定します。チャンネルはFloat値を受け取るため、ベクトリ全体を作り直すことなく1つの軸のみを微調整できます。 - 3つのターゲット指定方法。 シーンから特定のノードを1つ選択するか、現在アクティブなシーン内で名前に一致する最初のノードを指定するか、グループの全メンバーを一度に変更するかを選択できます。
- クラッシュ安全。 書き込み前にプロパティの存在と値の適合性をチェックするため、タイプミスがあってもロジックが停止するのではなく、スキップされてログに記録されます。
- エディタの利便性。 プロパティを選択または入力すると、型が既知の場合はValue Typeが自動入力されます(いつでも上書き可能)。Node Typeの Browse All Classes… エントリは、エディタ独自のAdd Nodeクラスツリーを開きます。
- 自己完結型で共有可能。 1つのファイル、オートロードなし、Project Settings不要、管理すべき追加要素はありません。
使用方法
ステートやトランジションに追加し、上部でノードのターゲット指定方法を選択してから、プロパティと値を選択します。
- ターゲット指定 はノードの検索方法です。Pick From Scene = シーンとそのノードの1つを選択し、そのシーンがアクティブな間のみ実行されます。By Node Name = 現在アクティブなシーン内で、入力した名前の最初のノード。In Group = 現在アクティブなシーン内のグループの全メンバー。
- Target Scene / Target Node (Pick From Scene)。シーン、その後ドロップダウンからノードを選択します。配置されたオブジェクト内部にアクセスするために、より深いパス(例:
SceneLayer/BaseLayer/Player/Sprite2D)を手動で入力することもできます。 - Node Search Name (By Node Name)。検索する名前。
*と?はワイルドカードとして機能します(Torch*はTorch2に一致)。 - Node Type + Group (In Group)。変更されるメンバーを持つグループ。Node Typeはオプションであり、Property Nameの提案を補完するためだけに使用されます。
- Property Name。Godotのプロパティ名。例:
modulate、または単一チャンネルの場合はmodulate:a。 - Value Type + value。値の種類(Float、Integer、Boolean、Text、Vector2、Color)とその値自体。一致する値のフィールドのみが表示されます。
例:画面全体のフェード。In Group → Lights グループ → プロパティ modulate:a → Value Type Float → 0.0 と設定すると、部屋のすべてのライトを同時に暗くします。
ヒント
- チャンネルはFloatのみ。
modulate:a、position:x、scale:yはすべてFloat値を受け取ります。これにより、他の軸を乱すことなく1つの軸のみをアニメーション化できます。 - Pick From Scene は意図的にシーンゲートされています。 選択したシーンがアクティブな間のみ発火するため、共有オブジェクトに同じアクションを配置しても、他の場所では静かに保たれます。
- 名前の命名規則。 各部屋で同じノードに同じ名前(
AmbientLight、Musicなど)を付けると、By Node Name を使用して「現在の部屋のそれ」をシーンごとの設定なしで変更できます。 - GameObjectの
visibleは抵抗します。 AGMakerはGameObject自身のvisibleを再設定するため、非表示にしてその状態を維持したい場合は、子ノードをターゲットにするか(またはmodulate:aを使用してください)。 - Debugをオンにする と、設定中にスキップされたもの(プロパティの欠落、型の不一致、シーンゲート)と一致するものがすべて出力され、Outputパネルに表示されます。
