我有一个游戏,我用几个表来存储玩家的进度。这是一个很长的游戏,所以我不时收到合法的用户反馈,为什么我没有云存储选项?
因此,我确实使用Google Play Games登录来取得成就,我认为我也可以简单地实现Google Saved Games,非常简单。
正如我所看到的,它使用一个简单的byte[]
数组来保存&从云中加载游戏进度(实际上是谷歌硬盘。(
我的问题是,如何创建一个byte[]
数组,该数组包含玩家保存的游戏实例的FULL数据库
我使用Sqlite数据库,如:
private static DatabaseHelper mInstance = null;
private DatabaseHelper(Context context) {
super(context, "duels_rpg_db", null, 123);
this.ctx = context;
getWritableDatabase();
}
public static DatabaseHelper getInstance(Context ctx) {
if (mInstance == null) {
mInstance = new DatabaseHelper(ctx.getApplicationContext());
}
return mInstance;
}
等等,没有什么特别的。
提前感谢
如果你使用C,序列化整个数据库会很容易,但在Android中,我认为你必须找到数据库文件,使用ByteArrayOutputStream类将其转换为字节数组,将其存储在Google Saved Games中,然后在必要时将字节数组转换回文件。有关将文件转换为字节数组(反之亦然(的示例,请参阅此链接。
最好序列化用户数据,而不是数据库文件。这样,如果你更新了你的应用程序,你就不用担心在尚未更新的应用程序版本中使用更新版本的DB了。
因此,我建议将您的进度转换为org.json.JSONObject。使用JSON,可以很容易地转换为具有json.toString().getBytes("utf-8")
的字节数组
在获取数据时,您可以将其转换回json,并编写一个方法,用json 的数据加载sqlite数据库