【发布时间】:2023-09-02 02:41:01
【问题描述】:
我正在开发一个使用 C# 和 monogame 的平台游戏作为一个有趣的项目来提高我的技能。我想添加对音频、视频、控件等设置的支持,但我不知道最好的方法。
我打算有一个存储所有设置的 XML 文件,如下所示:
<Settings>
<Audio>
<masterVolume>100</masterVolume>
<musicVolume>40</musicVolume>
<sfxVolume>90</sfxVolume>
</Audio>
<Video>
<Resolution>
<width>1920</width>
<height>1080</height>
</Resolution>
</Video>
<Controls>
<forward>W</forward>
<back>S</back>
<left>A</left>
<right>D</right>
</Controls>
</Settings>
我的计划是使用 Settings 类,该类具有用于音频、视频和控件等的静态变量,这些变量分为单独的类,以便我可以通过 Settings.Audio.MasterVolume 或 访问它们>Settings.Controls.Forward。 我想使用 Linq 将设置从 XML 加载到这些类中,并且我想在用户更改设置时将设置保存到 XML 文件中。
我知道也可以使用单例,但就我所做的研究而言,它有太多缺点。这是真的吗?
这是执行此操作的好方法,还是有更好的方法可以让我在整个项目中访问设置而不让所有内容都保持静态?
提前致谢!
【问题讨论】:
-
使用单例的主要问题是“全局静态”。您描述的解决方案正是“具有音频、视频和控件的静态变量的设置类”。需要明确的是,纯
static方法很好。全局常量很好,游戏都是关于管理状态的,但是以这种方式将所有 3 结合起来可能会导致问题。
标签: c# xml linq linq-to-xml monogame