动作游戏制作器中的实例化NPC共享资源属性

你好,

  • 操作系统:Windows 11

  • CPU:i7-13700k

  • GPU:RTX 3060 12G

  • 内存大小:64GB

  • 症状:我不确定这是一个 bug 还是预期行为。似乎 BaseSettingsVariableSettings 中存储的属性在所有实例中引用的是同一资源。因此,对任一实例所做的更改会影响所有其他实例。

  • 复现步骤:假设我有一个僵尸 NPC 场景。当我将该僵尸的多个实例添加到主场景中,并尝试仅更改其中一个的 HP 时,HP 值会改变所有实例的数值——包括原始(父级)僵尸场景。

这使得创建同一 NPC 的细微变体变得困难。如果我想调整某个实例(例如,给某个僵尸增加更多 HP),目前我必须从头创建一个全新的场景或游戏对象,这效率不高。

针对这种行为,是否有推荐的解决方法?或者有没有办法让这些设置对每个实例保持唯一?

谢谢!

你好!

出于好奇,你是通过 CTRL+D 还是右键点击“复制”来复制实例的?如果是这样,能否删除这些重复项,并改为通过以下方式实例化场景:

  1. 将场景从文件系统拖拽到场景中
  2. 右键点击你希望其所在的节点,然后点击“实例化子场景”

不幸的是,Godot 的资源属性在默认复制时会共享。虽然我们在可视化脚本中提供了一些解决方法,但在将对象放置到场景中时,我们还没有相应的解决方法。

我已经尝试了上述所有方法,最终结果都一样。

问题是变量设置中带有“本地到场景”选项。即使使用该选项,结果仍然相同。“本地到场景”选项没有任何作用。这些变量……并不可变……:slight_smile:

据我理解,这些变量在运行时会变得唯一。但如果您无法在编辑器中单独修改它们,那么它们的意义何在?

您试过取消勾选“Local to Scene”后问题是否仍然存在?在我制作 Bazelot Quest 示例时,我甚至可以在森林关卡中复制我的僵尸,它们仍然能正常工作。不过我当时并没有勾选该选项。

是的,我也遇到了同样的问题。

我也在尝试复现您的报告,但无法成功。
您能否通过以下步骤重现该问题?

  1. 创建一个新对象。不要对其进行任何修改。
  2. 从“文件系统”选项卡将其拖入场景中,命名为类似 Test1 的名称。
  3. 从“文件系统”选项卡将第二个实例拖入场景中,命名为类似 Test2 的名称。
  4. 保存项目并重新打开。
  5. 编辑 Test1 上的任意变量,例如将最大生命值设置为 10。
  6. 切换到 Test2 对象,查看最大生命值变量是否发生了变化。

Action Game Maker 2025.07.09 - 07.51.55.08

这是一个示例。父场景也被修改了。无论“相对于场景”选项是勾选还是取消勾选,都会出现相同的问题。

HP 也出现了同样的问题。我尝试过关闭并重新打开项目,但无济于事。

我运行的是从 Steam 下载的 Action Game Maker v1.0.12.stable [861d96a50]。

好的,这更清楚地解释了当前情况。我会检查这是否是预期的行为。

在此之前,在设置状态下,您可以使用 ChangeObjectProperty 将变量“应用到实例”,并在放置它们的场景中单独设置该操作,这样它们就不会共享(但您无法复制它们):


1 个赞

它对 HP 或任何变量都有效。非常感谢!!!这改变了一切。

2 个赞

好消息!他们正在修复在使用可编辑子对象时 Sw/Var 设置节点不唯一的问题。不确定会在哪个补丁中推出,但请留意相关更新。

1 个赞

谢谢!我迫不及待想看到更新上线。

1 个赞