我正在处理导出到unity的android游戏。我有一个活动来保存 SharedPreferences 上的值,这些值将从 Unity Activity 中检索并从 PlayerPrefs 更新。此外,这些值将从主要活动的 SharedPreferences 中读取。
我得到的值与我在主活动上写的值不匹配,只在我关闭整个应用程序时读取。
这是我的代码,实际上是如何运作的。
主要活动在共享偏好设置上保存一个值,然后启动 UnityPlayerActivity 。
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时活动的值是相同的。
我完全关闭了应用程序并再次打开它。
正如您可以看到值的变化但空格被%20 值替换。
这是来自 Unity Controller 的代码:
public void saveOnDataFromShared(string name) {
PlayerPrefs.SetString("PlayerName", name);
textShared.text = name;
}
public void loadStringFromPlayerPrefs() {
textShared.text = PlayerPrefs.GetString ("PlayerName", "Default value");
}
我无法弄清楚过程中发生了什么,感谢任何帮助。
答案 0 :(得分:0)
您可能缺少的是通过调用保存对 Prefs 所做的更改:
PlayerPrefs.Save();
因此,您的代码应如下所示:
public void saveOnDataFromShared(string name) {
PlayerPrefs.SetString("PlayerName", name);
PlayerPrefs.Save();
textShared.text = name;
}