【版本2.0.5】子节点不保存的弹窗报错。——已解决

问题描述:

1 当对一个对象,加入一个子节点。

比如DamageDisplaySettings。

这时候上方标签上,会对这个场景对象追加一个*。

这时如果对此对象不做马上保存功能,而是直接F5运行游戏,会弹出一个报错。

2 如果对此对象进行了保存,则不会产生这个报错。

3 连带问题:

(1)之前的版本中,对对象的CTRL+S保存,可以保存所有的对象。

(2)现在比如修改了两个对象,则两个对象标签上,都出现*,而你在任意界面中,用CTRL+S进行保存,只能保存对应的某一个对象。(仅一个对象的*消失)

(3)所以当你修改了两个对象,而按快捷键保存后,只要标签上还有带*号的对象。则运行游戏就会出现上面的报错。

4 这个问题是在2.0版本更新后才有的,因为一直找不到原因,所以一直疑惑。但是这次终于抓到它了,所以发出来。但是我并不知道,这属于BUG,还是新版本的一个正常机制。所以发到提问板块。

嗯,我一直在尝试复现这个问题,但没能成功。添加一个子节点并运行(不保存),即使有一个或两个未保存的对象,在 2.0.5 版本中我也从未见过弹出窗口。

根据我的发现,当你在有未保存对象的情况下运行时,编辑器会先保存它们,这也会重写 scene_transition_data.tres。该错误意味着 Windows 不允许替换该文件,因为此时有其他程序正在占用它。我怀疑是杀毒软件或同步程序正在扫描你的项目文件夹。如果你使用的是除 Windows Defender 以外的其他软件,也许可以尝试将项目文件夹添加到其排除列表中。

关于 Ctrl+S 的部分,Ctrl+S 仅保存当前场景,而“保存所有场景”的快捷键是 Ctrl+Shift+Alt+S。如果你希望 Ctrl+S 再次保存所有内容,可以前往编辑器设置 > 快捷键,为“保存所有场景”分配 Ctrl+S 快捷键,并从“保存场景”中移除该快捷键。这应该也能避免弹出窗口的出现,因为运行时不会留下任何未保存的内容。这也可能解释了为什么问题是从 2.0 版本开始出现的,因为在之前你运行时很少会有未保存的对象。

感谢Baz先生的回复,我已经将快捷键替换。
至于那个报错弹窗,我先不管它了,因为我运行游戏之前,习惯性保存一下对象。
只要保存了对象,运行游戏就不会弹窗。

您可以随时将项目发送至 pgmmv-support@gotchagotcha.jp,也许我们可以缩小范围,找出导致该问题的原因。

好的,我看看能不能做个最小复现。

1 个赞

1 我建了一个新项目,想复现此问题,结果无法复现。

2 然后我做了一下尝试:

(1)修改项目文件名。

(2)删除项目的.godot文件。

(3)再次重新导入此项目。

3 一切正常了!

啊,可能是 .godot 文件夹里卡住了什么。太好了,很高兴听到它又恢复正常了。

1 个赞