我目前正在使用主菜单中的按钮作为将 bool(boolean) 值设置为true或false的切换按钮。初始化为true,如果将其设置为false,则不会播放声音。
但是,问题在于,如果您在主菜单中将切换开关设置为false,然后将屏幕切换为播放屏幕,然后再次返回主菜单,则由于正在使用新屏幕,因此将其再次初始化为true。
有什么办法解决这个问题?
最佳答案
您需要将设置的值存储在始终保持存在的类实例的 bool(boolean) 字段中。按钮本身是一个 View 对象-不要依赖它来存储状态。
例如,创建一个名为UserSettings的类,并在其中包含一个soundEnabled
bool(boolean) 值。您的游戏实例可以保留对UserSettings实例的引用,以传递到所有不同的屏幕。初始化MenuScreen时,它将查看soundEnabled
bool(boolean) 值,并使用该值来设置按钮的初始检查状态。该按钮具有一个ChangeListener,可以适当地修改UserSettings对象中的 bool(boolean) 值。
然后,在播放屏幕中,传入相同的UserSettings对象,它就是用来确定是否应打开声音的对象。
此外,您可以使用Json类将UserSettings对象保存到文件(或首选项)中,然后在重新打开游戏时,您的游戏可以从文件中加载该文件(如果存在)。这样,每次 session 都可以记住用户的偏好。