Java 如何在libgdx中正确实现声音切换?

Java 如何在libgdx中正确实现声音切换?,java,audio,libgdx,Java,Audio,Libgdx,我目前正在使用主菜单中的一个按钮作为切换,将布尔值设置为true或false。它被初始化为true,如果设置为false,则不会播放声音 但是,问题是,如果您在主菜单中将切换设置为false,并切换屏幕(即播放屏幕),然后再次返回主菜单,则会再次初始化为true,因为正在使用新屏幕 这有什么办法 您需要将该设置的值存储在类实例的布尔字段中,该字段一直保持不变。按钮本身是一个视图对象——不要依赖它来存储状态 例如,创建一个名为UserSettings的类,并在其中启用soundEnabledboo

我目前正在使用主菜单中的一个按钮作为切换,将布尔值设置为true或false。它被初始化为true,如果设置为false,则不会播放声音

但是,问题是,如果您在主菜单中将切换设置为false,并切换屏幕(即播放屏幕),然后再次返回主菜单,则会再次初始化为true,因为正在使用新屏幕


这有什么办法

您需要将该设置的值存储在类实例的布尔字段中,该字段一直保持不变。按钮本身是一个视图对象——不要依赖它来存储状态

例如,创建一个名为UserSettings的类,并在其中启用
soundEnabled
boolean。您的游戏实例可以保留对UserSettings实例的引用,以传递到所有不同的屏幕。初始化菜单屏幕时,它会查看
soundEnabled
布尔值,并使用该值设置按钮的初始选中状态。该按钮有一个ChangeListener,可以适当地修改UserSettings对象中的布尔值

然后在播放屏幕中,传入相同的UserSettings对象,这就是它用来确定是否应该打开声音的内容


此外,您可以使用Json类将UserSettings对象保存到一个文件(或首选项),然后当游戏重新打开时,您的游戏可以从该文件(如果存在)加载该对象。这样,用户的偏好会在不同的会话中被记住。

是的,这很有意义。谢谢你的回答!