以下是转换后的帖子,已去除连字符和分号,并展开复合词:
BazChangeNodePropertyAction
用于在场景中的任何节点(包括非 AGMaker 对象的节点)上设置真实的、具有特定类型的 Godot 属性,例如 modulate、visible、position、scale 或 text。
你可以将其视为原生 Change Object Property 的缺失另一半。它可以从游戏场景中获取节点,或通过名称获取节点。
为了支持我的工作,请考虑 成为赞助者。 ![]()
下载:
BazChangeNodePropertyAction.gd (34.8 KB)
要求
AGMaker 1.3.0 及以上版本
安装
- 下载
BazChangeNodePropertyAction.gd(见下方附件)。 - 将其放入项目的
custom_actions/文件夹中。如果该文件夹不存在,请在项目根目录下创建。子文件夹如custom_actions/object/也是可以的。 - 完成。它将显示在 Add Action 对话框中的 Object / オブジェクト 组下。无需启用任何内容。
功能说明
将 AGMaker 中仅支持浮点数的属性更改功能,扩展为允许你设置 真实 的 Godot 属性及其 真实 类型,即属性实际所需的 Color、Vector2、String、bool 或数值。
- 任何类型的属性。
modulate(Color)、position/scale(Vector2)、text(String)、visible/flip_h(bool)、z_index(int)、rotation(float)。选择值类型,它就会直接写入该节点。 - 单个通道。 添加通道以仅修改某一部分:
modulate:a仅设置透明度,position:x仅设置 X 轴。通道接受 Float 值,因此你可以微调一个轴而无需重建整个向量。 - 三种目标定位方式。 从场景中选择一个确切节点,命中当前活动场景中第一个按名称匹配的节点,或一次性更改组中的每个成员。
- 防崩溃保护。 它在写入前会检查属性是否存在以及值是否匹配,因此拼写错误只会导致跳过并记录日志,而不会中断你的逻辑。
- 编辑器便利性。 当类型已知时,选择或输入属性会自动填充 Value Type(你也可以随时覆盖它),而 Node Type 的 Browse All Classes… 条目会打开编辑器自身的 Add Node 类树。
- 独立且可共享。 单个文件,无需 autoload,无需 Project Settings,无需额外管理内容。
使用方法
将其添加到状态或转换中,在顶部选择目标节点的方式,然后选择属性和值。
- 目标定位(Targeting) 是查找节点的方式。Pick From Scene = 选择一个场景及其中的一个节点,仅在该场景激活时运行。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 值。这就是你可以在不干扰其他部分的情况下动画化单个轴的方式。 - Pick From Scene 故意受场景限制。 它仅在其所选场景为活动场景时触发,因此放置在共享对象上的相同操作在其他地方保持静默。
- 命名约定节点。 在每个房间中为同一节点赋予相同的名称(
AmbientLight、Music),然后 By Node Name 即可更改“当前房间中的那个节点”,而无需进行每场景设置。 - GameObject 的
visible属性会冲突。 AGMaker 会重新断言 GameObject 自身的visible,因此如果你想隐藏某个对象并保持隐藏状态,请 targeting 子节点(或使用modulate:a)。 - 开启 Debug 以在接线时打印每次跳过(属性缺失、类型不匹配、场景门控)并匹配到 Output 面板。
