属性修改未正确执行。

修改状态执行动作的属性偶尔会出现错误。
附件图片中的两个执行动作完全相同,但上面的执行动作无法工作,而新创建的下面的执行动作可以正常工作。当前版本为 1.41。如果是我个人的疏忽,敬请谅解;如需验证,我可以提供相关文件。

是的,如果您不介意的话,能否请您发送该文件,以便我们更深入地查看该对象的配置?

出于好奇,那个上层动作是直接从别处复制/粘贴过来的,还是在那个状态下重新制作的?我怀疑它是否以某种方式引用了旧资源,这或许能解释为什么新创建的那个能正常工作,而那个却不行。尝试“粘贴为唯一实例”或右键选择“使其唯一”或许能解决这个问题。

这次的版本大更新,确实出现了很多前后资源配置兼容问题。
比如我遇到的一个问题,两个对象叠加会出现花屏。
QQ20260907-172002_format_1
然后我在资源里,右键重新导入素材就没事了。
还有一些对象实例化的时候,也会出现报错,我猜测也是版本提升导致的问题。
所以我并没有急于去解决,到时候看看是哪个地方,产生了前后版本冲突。
PS.包括我的一些音频资源,新版本更新后,也出现了报错,然后我一个一个把资源手动重新加载一下,也就没事了。

谢谢 serbow,这和我之前猜测的一致。@PIero,那个上层动作是在你更新到 1.4.1 之前创建的吗?随着后端升级到新的 Godot 版本,我认为旧版本保存的动作可能仍保留着资源数据,而新版本读取这些数据的方式略有不同;相比之下,新创建的动作则会以新的方式写入。这或许能解释为什么新复制的动作能正常工作,而原始动作却不行,尽管检查器显示它们完全相同。

在发送文件之前,也许可以先尝试点击“项目”→“重新加载当前项目”。如果这没有改变任何情况,请关闭编辑器,删除项目根目录下的 .godot 文件夹,然后重新打开,以便所有内容重新导入干净,这最近帮助 Discord 上的一位用户清除了过时的缓存。如果执行上述操作后上层动作仍然表现异常,按照 Bellamy 的要求发送项目文件,我们就可以在资源级别上比较这两个动作了。

1 个赞

无法运行的动作是将在更新前创建的动作复制到更新后,并进行唯一化处理的结果。

尝试“重新加载当前项目”无效。

虽然尚未尝试重新导入所有资源,但我的项目中已经使用了大量的音效和动画,因此如果执行该操作,工作量将非常巨大。

serbow 遇到的是图像错误,而我遇到的是碰撞掩码和碰撞图层的问题。以我业余的观点来看,似乎资源本身没有问题。

目前新创建的动作可以正常运行,因此我会先继续使用。如果发现图像或声音有问题,再尝试重新导入。

文件已经发送,您可以忽略它。

谢谢。原来还存在这样的故障。

如果再次出现类似症状,我会参考该解决方法进行处理。

备份一下项目文件,然后按照baz先生说的,直接手动删除.godot文件夹。删除后启动AGM。这不会有任何损失,只是清除掉原来版本AGM的缓存,然后等待一会儿让AGM重新加载。AGM会清空原来版本的操作痕迹,但是这个影响不大,重新打开场景就可以了。如果清空缓存后,出现报错,就再点击“重新加载项目文件”再试一下。

1 个赞

谢谢。在删除 .godot 文件夹并重新启动 AGM 后:

之前的历史记录和打开的场景都已重置,但问题属性的修改仍然无法生效。虽然不清楚具体原因,但感觉这与更新无关,而是某种意外导致该执行操作本身出现了损坏。

嗯,看来不是版本更新问题。其实如果不是太想追究,其实删掉过去的,用现在的就直接解决了,哈哈哈。不过深度挖掘也是有必要的。

感谢提交该项目,我已经成功复现了问题并进行了排查。复制的动作本身并没有出错。从资源层面比较,两者完全一致,因此复制粘贴和使用“制作唯一”功能都是没问题的。

实际发生的情况是,当对象在某个状态下开始移动时,AGMaker 会将对象设置中的基础 collision_mask(碰撞蒙版)重新写回对象。collision_layer(碰撞层)不会被修改,只有蒙版会受影响。在 ダッシュ素通り(冲刺穿透)中,上层代码对位于 MoveInDisplayDirection 之前执行,因此蒙版被设置为 1,然后在移动开始时立即被覆盖回 3。下层代码对则在移动已经开始之后执行,所以其更改生效。如果你将 MoveInDisplayDirection 拖动到上层代码对之上,那么上层代码对也能正常工作。

因此,目前任何对 collision_mask 使用 ChangeObjectProperty 的操作,都需要放置在移动动作的下方。

2 个赞