保存Libgdx中两个类的首选项

时间:2017-03-16 11:26:24

标签: libgdx preferences

我对偏好设备有疑问,我想知道是否有人可以帮助我? 我正在开发一个带有设置屏幕和游戏屏幕的游戏。两者都需要能够写入相同的首选项。代码在Settingsscreen中工作,如下所示:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<ul>
  <li data-slide-to="0" data-target="#myCarousel" class="appendLi"></li>
  <li data-slide-to="0" data-target="#myCarousel" class="appendLi"></li>
  <li data-slide-to="0" data-target="#myCarousel" class="appendLi"></li>
  <li data-slide-to="0" data-target="#myCarousel" class="appendLi"></li>
  <li data-slide-to="0" data-target="#myCarousel" class="appendLi"></li>
</ul>

并且在Gamescreen中我收到错误。游戏屏幕中的代码与设置中的代码相同。这有效:

public class SettingsScreen implements Screen{
private Preferences prefs;
    final Preferences prefs = Gdx.app.getPreferences("myprefs");
    prefs.putFloat("volume", volume);

但这不是:

volume = prefs.getFloat("volume", 1);

我收到以下错误:

prefs.putFloat("volume", volume);

1 个答案:

答案 0 :(得分:0)

您可能在构造函数中有一个名为“prefs”的局部变量,也称为“prefs”的成员变量仍为空,因为您只将Preferences实例分配给本地范围变量。

private Preferences prefs; // class member variable
final Preferences prefs = Gdx.app.getPreferences("myprefs"); // local scope variable

在SettingsScreen中使用它的原因可能是您在本地范围内对prefs进行调用。

这是你可能想要的:

// class member variable
private final Preferences prefs; 
// constructor:    
this.prefs = Gdx.app.getPreferences("myprefs");