从Unity写入Player Prefs并从Android读取共享首选项返回错误的值

时间:2016-07-25 22:51:00

标签: android unity3d sharedpreferences unity5 android-sharedpreferences

我正在处理导出到游戏。我有一个活动来保存 SharedPreferences 上的值,这些值将从 Unity Activity 中检索并从 PlayerPrefs 更新。此外,这些值将从主要活动的 SharedPreferences 中读取。

我得到的值与我在主活动上写的值不匹配,只在我关闭整个应用程序时读取。

  

这是我的代码,实际上是如何运作的。

主要活动在共享偏好设置上保存一个值,然后启动 UnityPlayerActivity

enter image description here

public void writeOnSharedAndLaunch(String text) {
    String sharedPreferenceName = context.getPackageName() + ".v2.playerprefs";
    SharedPreferences sharedPreferences = context.getSharedPreferences(sharedPreferenceName, MODE_PRIVATE);;
    Editor editor = sharedPreferences.edit();

    editor.putString("PlayerName", playerText.getText().toString());
    editor.apply();

    Intent intent = new Intent(context, UnityPlayerActivity.class);
    startActivity(intent);
}

Unity 我从 PlayerPrefs 中获取值没有问题,但是当我更新 PlayerPrefs 上的首选项并返回 Main时活动的值是相同的。

enter image description here enter image description here

  

我完全关闭了应用程序并再次打开它。

正如您可以看到值的变化但空格被%20 值替换。

enter image description here

这是来自 Unity Controller 的代码:

public void saveOnDataFromShared(string name) {
    PlayerPrefs.SetString("PlayerName", name);
    textShared.text = name;
}
public void loadStringFromPlayerPrefs() {
    textShared.text = PlayerPrefs.GetString ("PlayerName", "Default value");
}

我无法弄清楚过程中发生了什么,感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您可能缺少的是通过调用保存对 Prefs 所做的更改:

PlayerPrefs.Save();

因此,您的代码应如下所示:

public void saveOnDataFromShared(string name) {
    PlayerPrefs.SetString("PlayerName", name);
    PlayerPrefs.Save();
    textShared.text = name;
}