2201_76015305 2024-04-26 17:49 采纳率: 33.3%
浏览 26

关于Godot切换场景导致音效中断

func play():
get_node("open").play();
get_tree().change_scene_to_file("res://地图/node.tscn");
pass

这是一个绑定给Button子节点pressed信号的函数。问题是,现在点击按钮它就会切换场景。导致open这个AudioSteamPlayer也会被销毁。于是音效总是会没播完或者直接来不及播,不想使用延迟。要如何处理?

  • 写回答

3条回答 默认 最新

  • 檀越@新空间 2024-04-26 17:49
    关注

    下午好🌅🌅🌅
    本答案参考ChatGPT-3.5

    问题分析:

    从场景A切换到场景B时,Godot会释放场景A的所有资源来加载场景B。如果在场景A中播放了某些音效,音效会在释放时间停止播放,从而导致切换场景时的音效中断。

    解决方案:

    1.在场景B的音效节点上添加“Autoplay on Load”选项。这会让音效在加载场景B时自动播放,并且避免中断音效的问题。

    2.将音效节点从场景A移到一个持久节点中(例如场景树的根节点),这样音效不会在场景切换时被删除。

    修改代码:

    移动open节点到场景树的根节点中:

    # in play() function
    get_node("open").play()
    get_tree().root.add_child(get_node("open"))
    get_tree().change_scene_to_file("res://地图/node.tscn")
    

    在地图/node.tscn场景中添加一个Autoplay音效节点。

    如果您不想使用持久节点或autostart,还可以使用 Godot的Singleton。

    参考链接:Godot Docs - AudioStreamPlayer

    评论

报告相同问题?

问题事件

  • 创建了问题 4月26日