使用RoboVM和libgdx向GameCenter提交分数
我正在使用libgdx和robovm 当我尝试在iOS上的GameCenter上将分数提交到排行榜时,我遇到了一个错误。我能够显示排行榜。这是我得到的错误:使用RoboVM和libgdx向GameCenter提交分数,libgdx,robovm,game-center-leaderboard,Libgdx,Robovm,Game Center Leaderboard,我正在使用libgdx和robovm 当我尝试在iOS上的GameCenter上将分数提交到排行榜时,我遇到了一个错误。我能够显示排行榜。这是我得到的错误: ***由于未捕获的异常“GKInvalidArgumentException”而终止应用程序,原因是:“GKScore必须指定排行榜。” libc++abi.dylib:以NSException类型的未捕获异常终止 这与此相似,但它是客观的,所以我不明白答案 这是我显示排行榜的代码(这很有效) 这是我提交分数的代码(这不起作用) publi
***由于未捕获的异常“GKInvalidArgumentException”而终止应用程序,原因是:“GKScore必须指定排行榜。”
libc++abi.dylib:以NSException类型的未捕获异常终止
这与此相似,但它是客观的,所以我不明白答案
这是我显示排行榜的代码(这很有效)
这是我提交分数的代码(这不起作用)
public void submitScoreGPGS(整数分数,MyLeadBoardCallback回调){
//如果玩家未通过身份验证,请不要执行任何操作
如果(!GKLocalPlayer.getLocalPlayer().isAuthenticated()){
//scoreReportFailed(buildUnauthenticatedPlayerError());
Gdx.app.log(“游戏中心”、“Notlogedin”);
回来
}
GKScore scoreReporter=新的GKScore(标识符);
scoreReporter.setValue(分数);
scoreReporter.setLeaderboardIdentifier(标识符);
//scoreReporter.setShouldSetDefaultLeaderboard(真实);
//scoreReporter.setContext(0);
NSArray分数=新NSArray(scoreReporter);
Gdx.app.log(“游戏中心”、“报告中心”);
GKScore.reportScores(分数,新的VoidBlock1(){
@凌驾
公共无效调用(N错误){
if(错误!=null){
Gdx.app.log(“Gamecenter”、“scorereportfailed”);
}否则{
Gdx.app.log(“Gamecenter”、“scorereportcompleted”);
}
}
});
}
有人知道问题出在哪里吗?我尝试过谷歌搜索,但几乎没有关于“robovm和gamekit/gamecenter”的信息。由于某种原因,包含排行榜id的变量被垃圾收集。必须在scoreReporter.setLeaderboardIdentifier(“我的硬编码id”)处对字符串进行硬编码代码>。奇怪
public void getLeaderboardGPGS() {
// If player is not authenticated, do nothing
if (!GKLocalPlayer.getLocalPlayer().isAuthenticated()) {
return;
}
GKGameCenterViewController gameCenterView = new GKGameCenterViewController();
gameCenterView.setGameCenterDelegate(new GKGameCenterControllerDelegateAdapter() {
@Override
public void didFinish (GKGameCenterViewController gameCenterViewController) {
dismissViewControllerAndNotifyListener(gameCenterViewController, GKGameCenterViewControllerState.Leaderboards);
}
});
gameCenterView.setViewState(GKGameCenterViewControllerState.Leaderboards);
gameCenterView.setLeaderboardIdentifier(identifier);
keyWindow.getRootViewController().presentViewController(gameCenterView, true, null);
}
public void submitScoreGPGS(int score, MyLeaderBoardCallback callback) {
// If player is not authenticated, do nothing
if (!GKLocalPlayer.getLocalPlayer().isAuthenticated()) {
//listener.scoreReportFailed(buildUnauthenticatedPlayerError());
Gdx.app.log("Gamecenter","Notlogedin");
return;
}
GKScore scoreReporter = new GKScore(identifier);
scoreReporter.setValue(score);
scoreReporter.setLeaderboardIdentifier(identifier);
//scoreReporter.setShouldSetDefaultLeaderboard(true);
//scoreReporter.setContext(0);
NSArray<GKScore> scores = new NSArray<GKScore>(scoreReporter);
Gdx.app.log("Gamecenter","Report socre");
GKScore.reportScores(scores, new VoidBlock1<NSError>() {
@Override
public void invoke (NSError error) {
if (error != null) {
Gdx.app.log("Gamecenter","scorereportfailed");
} else {
Gdx.app.log("Gamecenter","scorereportcompleted");
}
}
});
}