掛算Questの次のアップデートで、Game Centerを使ったランキング表示機能を組み込みます。
Leaderboardsを使うのですが、小数(float型)のスコアを送信した時に、数字の桁がずれたり完全におかしな数字に変換されたりでちょっと苦労したので、書き留めておきます。
なぜか日本語の情報が無かって苦労したのですが、英語のサイトを調べて何とか解決することができました。
Leaderboardsに送信するには、int64_t型というものを使わなければならないようで、それに変換してから送信する必要があります。
そもそも私は、int64_t型なんて言葉を初めて聞きました。
具体的な変換コードはこんな感じになります。
GKScore *scoreReporter = [[GKScore alloc] initWithCategory:@"[Leaderboard ID]"];
int64_t myScore = (int64_t)(totalPoint * 100.0f);
scoreReporter.value = myScore;
[scoreReporter reportScoreWithCompletionHandler:^(NSError *error) {
if (error != nil) {
// エラーの処理
NSLog(@"error %@", error);
}
}];
当然、変数とLeaderboard IDは読み替えて欲しいのですが、このコードで言うとtotalPointという変数がfloat型で計算したスコアを入れてあります。
float型の場合は、100倍してから変換する必要があるようです。
int64_t型っていうのを知った事と、初めてGame Centerの機能を実装したことで、少し成長しました。