Google 玩游戏服务:保存游戏,创建新快照
Google play games services : Saved games, creating a new snapshot
我正在遵循 google 开发人员指南,了解如何在我的游戏中设置保存的游戏,当我到达创建快照以存储数据的部分时,该指南没有指定要做什么做。
我还检查了此处提供的示例代码
https://github.com/gguuss/android-basic-samples/tree/master/BasicSamples/CollectAllTheStars2
但是使用的一些方法被标记为已弃用,而且他们从 5 年前就没有更新代码
private String mCurrentSaveName = "snapshotTemp";
/**
* This callback will be triggered after you call startActivityForResult from the
* showSavedGamesUI method.
*/
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent intent) {
if (intent != null) {
if (intent.hasExtra(SnapshotsClient.EXTRA_SNAPSHOT_METADATA)) {
// Load a snapshot.
SnapshotMetadata snapshotMetadata =
intent.getParcelableExtra(SnapshotsClient.EXTRA_SNAPSHOT_METADATA);
mCurrentSaveName = snapshotMetadata.getUniqueName();
// Load the game data from the Snapshot
// ...
} else if (intent.hasExtra(SnapshotsClient.EXTRA_SNAPSHOT_NEW)) {
// Create a new snapshot named with a unique string
String unique = new BigInteger(281, new Random()).toString(13);
mCurrentSaveName = "snapshotTemp-" + unique;
// Create the new snapshot
// ...
}
}
}
谁能帮帮我?在 //create the new snapshot comment
附近可以做什么?
经过大量研究,我发现了如何操作,在执行此操作之前,您的玩家必须先登录
//the data you want to save must be in bytes
byte[] bytearray;
//name of the snapshot
private String currentSave="snapshot"+1235;
private void executeSaving(){
// get the snapshoClient
SnapshotsClient snapshotsClient= Games.getSnapshotsClient(this,account);
// to save a game
snapshotsClient.open(currentSave,true).addOnCompleteListener(task -> {
Snapshot snapshot =task.getResult().getData();
if (snapshot != null){
//call of the method writeSnapshot params : the snapshot and the data we
//want to save with a description
writeSnapshot(snapshot,bytearray,"first description").addOnCompleteListener(task1 -> {
if(task1.isSuccessful()){
Toast.makeText(getApplicationContext(),"Succesful",Toast.LENGTH_SHORT).show();
}else {
Log.e("ERR",""+task1.getException());
}
});
}
});
}
private Task<SnapshotMetadata> writeSnapshot(Snapshot snapshot ,byte[] bytearray,String desc){
//write your data in the snapshot
snapshot.getSnapshotContents().writeBytes(bytearray);
SnapshotMetadataChange snapshotMetadata = new SnapshotMetadataChange.Builder().setDescription(desc).build();
SnapshotsClient snapshotsClient=Games.getSnapshotsClient(this,account);
//commit and close to send the new changes to google play games services
return snapshotsClient.commitAndClose(snapshot,snapshotMetadata);
}
我正在遵循 google 开发人员指南,了解如何在我的游戏中设置保存的游戏,当我到达创建快照以存储数据的部分时,该指南没有指定要做什么做。
我还检查了此处提供的示例代码 https://github.com/gguuss/android-basic-samples/tree/master/BasicSamples/CollectAllTheStars2
但是使用的一些方法被标记为已弃用,而且他们从 5 年前就没有更新代码
private String mCurrentSaveName = "snapshotTemp";
/**
* This callback will be triggered after you call startActivityForResult from the
* showSavedGamesUI method.
*/
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent intent) {
if (intent != null) {
if (intent.hasExtra(SnapshotsClient.EXTRA_SNAPSHOT_METADATA)) {
// Load a snapshot.
SnapshotMetadata snapshotMetadata =
intent.getParcelableExtra(SnapshotsClient.EXTRA_SNAPSHOT_METADATA);
mCurrentSaveName = snapshotMetadata.getUniqueName();
// Load the game data from the Snapshot
// ...
} else if (intent.hasExtra(SnapshotsClient.EXTRA_SNAPSHOT_NEW)) {
// Create a new snapshot named with a unique string
String unique = new BigInteger(281, new Random()).toString(13);
mCurrentSaveName = "snapshotTemp-" + unique;
// Create the new snapshot
// ...
}
}
}
谁能帮帮我?在 //create the new snapshot comment
附近可以做什么?
经过大量研究,我发现了如何操作,在执行此操作之前,您的玩家必须先登录
//the data you want to save must be in bytes
byte[] bytearray;
//name of the snapshot
private String currentSave="snapshot"+1235;
private void executeSaving(){
// get the snapshoClient
SnapshotsClient snapshotsClient= Games.getSnapshotsClient(this,account);
// to save a game
snapshotsClient.open(currentSave,true).addOnCompleteListener(task -> {
Snapshot snapshot =task.getResult().getData();
if (snapshot != null){
//call of the method writeSnapshot params : the snapshot and the data we
//want to save with a description
writeSnapshot(snapshot,bytearray,"first description").addOnCompleteListener(task1 -> {
if(task1.isSuccessful()){
Toast.makeText(getApplicationContext(),"Succesful",Toast.LENGTH_SHORT).show();
}else {
Log.e("ERR",""+task1.getException());
}
});
}
});
}
private Task<SnapshotMetadata> writeSnapshot(Snapshot snapshot ,byte[] bytearray,String desc){
//write your data in the snapshot
snapshot.getSnapshotContents().writeBytes(bytearray);
SnapshotMetadataChange snapshotMetadata = new SnapshotMetadataChange.Builder().setDescription(desc).build();
SnapshotsClient snapshotsClient=Games.getSnapshotsClient(this,account);
//commit and close to send the new changes to google play games services
return snapshotsClient.commitAndClose(snapshot,snapshotMetadata);
}