Android-保存玩家数据-3种不同选项的比较
欢迎大家! 我正在Anroid上编写一个手机游戏。 我真的很想知道如何保存玩家数据。 这将是一款可以在不同设备上运行而不会丢失数据的游戏Android-保存玩家数据-3种不同选项的比较,android,arrays,sharedpreferences,Android,Arrays,Sharedpreferences,欢迎大家! 我正在Anroid上编写一个手机游戏。 我真的很想知道如何保存玩家数据。 这将是一款可以在不同设备上运行而不会丢失数据的游戏 使用SharedReference 使用JSONObject、JSONArray并将其保存到内部存储器中的文件中,然后将其上载到外部服务器 SQLite,MySQL 你会选择什么?每种选择的优缺点是什么 我想保存数据,例如: 高分 生活 法力 步数 品级 金额 还有更多 这取决于将有多少玩家数据。但是,除非有很多玩家数据,否则我建议使用共享偏好,特别是如果有一
这取决于将有多少玩家数据。但是,除非有很多玩家数据,否则我建议使用共享偏好,特别是如果有一些简单的东西,比如玩家对象或玩家对象列表。那就够了 您可以对玩家列表使用如下内容,如果只想保存1,可以将对该列表的任何引用更改为仅一个玩家对象。如果您有大量数据、播放器或需要额外的安全性,您可能希望使用SQLLite
public class PlayerPrefs {
private static final String PLAYERS_PREF_FILE = "PLAYERS_PREF_FILE";
private static final String PLAYERS = "PLAYERS";
private static SharedPreferences getPrefs(){
final Context context = ApplicationData.getAppContext();
return context.getSharedPreferences(PLAYERS_PREF_FILE, Context.MODE_PRIVATE);
}
public static List<Player> getPlayers() {
final Gson gson = new Gson();
Type listType = new TypeToken<ArrayList<Player>>() {}.getType();
SharedPreferences prefs = getPrefs();
String players = prefs.getString(PLAYERS, null);
if (players == null){
return new ArrayList<Player>();
}
return gson.fromJson(players, listType);
}
public static void setPlayers(List<Player> players) {
final Gson gson = new Gson();
if (players != null) {
final SharedPreferences prefs = getPrefs();
SharedPreferences.Editor editor = prefs.edit();
editor.putString(PLAYERS, gson.toJson(players));
editor.apply();
}
}
}
共享引用应该是处理如此少量数据的方式。在本例中,在SQLite上使用它们有很多好处
我不鼓励使用外部服务器,因为我个人不希望我的游戏需要互联网才能玩。我觉得最好解释更多关于玩家数据的信息,让人们能够为你提供更好、更定制的答案。我编辑了一个问题。查找。所有这些信息都可以包含在玩家对象中。目前,这将不是多人游戏。一个播放器一个设备。我希望将数据保存到外部,因为如果我在智能手机上玩游戏,现在我想在ma平板电脑上玩,数据必须从外部服务器下载。那么这是一个完全不同的问题。如果您希望从外部加载并从集中位置访问它,则需要在服务器上设置web服务,至少为播放器对象设置一个get and set服务。但在设置之前,为了跨会话维护播放器数据,我建议您使用上面的解决方案。我在服务器上有外部服务,它通过PHP脚本与客户端应用程序通信。我有一个表“用户”,其中包含播放器数据,但应用程序需要注册/登录播放器的internet访问。外部服务器就像备份服务器。在这种情况下,您可以使用它,但不能依赖它。使用外部服务器进行某种备份,这样用户可以切换到其他设备并传输进度,但也要确保使用SharedRefers在本地保存副本,因为没有internet连接无法玩游戏是一种糟糕的用户体验。是的,我知道:)那么您更喜欢SharedReference,是吗?例如,我登录到我的应用程序,一些数据正在从服务器下载。我把这些数据放到SharedReferences文件中,我可以通过所有应用程序对其进行操作?当然可以。它们非常容易使用,而且实际上可以在其中保存大量原始数据(如您所说的、高分、进度、硬币等)。在外部服务器中,我需要为用户数据创建其他表,或者我可以对现有表进行操作,但我需要添加一些新列,如。进步、高分等。?
compile 'com.google.code.gson:gson:2.5'