我在Android游戏中设置了排行榜,但它似乎运行良好。
在主菜单中,玩家可以按“显示分数”。按钮只是查看排行榜,当玩家的游戏结束时(通过失去一生或完成游戏),他们可以选择提交他们的分数。如果按此按钮,则会提交分数并显示排行榜以显示新分数。
我设置了我的应用程序,以便在暂时中断时返回当前场景(菜单,游戏等)。
然而,我无法弄清楚如何知道'如果当前正在向用户显示排行榜。 (好吧,我确实知道如何设置这个,而不是我知道如何在退出排行榜时取消它)
我有一个变量设置,用于确定我的应用在onSignedInSucceded()'像这样调用:
@Override
public void onSignInSucceeded() {
//If the flag is set, then display the leaderboard
if (signInAction==SHOW_LEADERBOARD){
displayLeaderBoard();
}
//If the flag is set, then display the submit score
else if (signInAction==SUBMITSCORE){
submitScore();
}
//Otherwise, reset the flag and take no action
else {signInAction=NO_ACTION;}
}
然而,会发生的是,让我们说用户按下了“显示分数”。按钮,我们将signInAction设置为SHOW_LEADERBOARD然后连接。显示排行榜。
用户然后按后退键并返回到应用程序。如果应用程序现在被中断,则调用onSignInSucceded()并再次显示排行榜。 (但是当应用程序被中断时它没有被显示,因此这会降低用户体验。)
当用户按下'后退时,它会很棒。退出排行榜的关键,我可以将signInAction设置回' No_Action' - 我怎么能这样做?
仅仅是为了获取更多信息,我的应用程序是一个单独的活动,并使用自定义场景管理器,所以在我的Activity类中,我可以在后面按下这样做:
If (CurrentScene = mainMenu){
//Do Something Here
}
但是,排行榜不是自定义场景。所以我不确定该怎么做。
我想这个问题可能最好总结为'如何从Google Play排行榜中检测到后退键? (当用户将其退回应用程序时)' - 任何帮助将不胜感激。
答案 0 :(得分:1)
您应该能够使用onActivityResult()来清除signInAction。您需要根据应用程序检查请求代码和结果代码。
一些可能的结果将是:
Activity.RESULT_CANCELED(这是您感兴趣的那个)
GamesActivityResultCodes.RESULT_RECONNECT_REQUIRED
但你可能最好以同样的方式处理它们。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
//just returned from displaying the leaderboard
if(requestCode==REQUEST_LEADERBOARD)
{
signInAction=NO_ACTION;
return;
}
super.onActivityResult(requestCode, resultCode, data);
}