AudioStreamPlayerc重复生成bug.zip (1.6 MB)
复现方式:
1.打开项目后,进入项目测试![]()
2.按键Z播放AudioStreamPlayer(不会清除的节点)
3.按键X播放AudioStreamPlayer2D(不会显示的节点)
4.然后打开左侧场景的远程查看corescene的节点
5.连续按Z后会出现产生很多AudioStreamPlayer节点但是不会清除情况
问题所在:
1.位置在game object 的 vs 【状态机】的【动作】里的【播放声音】
2.如果没有启用AudioStreamPlayer2D,便会重复生成AudioStreamPlayer

额外:而且当重复播放音频后,在没有关闭【debug】情况下再回到人物界面场景,在右侧检查器播放根节点的
AudioStreamPlayer-bug,AudioStreamPlayer-bug2,AudioStreamPlayer2D-bug3,都会出现叠加后的重复声音
AI判断:
为什么会这样
AGM 的PlayAudio动作内部硬编码了两套销毁逻辑:
AudioStreamPlayer2D 分支:插件内部自动连接finished信号,音频播放结束后调用queue_free()把临时节点删掉,所以场景树不会堆积。
普通 AudioStreamPlayer 分支:插件没有绑定 finished 自动释放逻辑。音效播放完毕,节点还留在场景树里,只是停止发声;你每次换枪触发播放,就新建一个,越堆越多GitHub。
普通 AudioStreamPlayer 本身有
finished信号,只是 AGM 这个动作没有给普通版本接上自动销毁,只给 2D 版本写了释放代码。