2012-10-26 2 views
4

5 가지 게임 모드가있는 앱이 있습니다. 그 중 3 가지는 정수 점수가 있고 2 가지는 시간 기반 점수가 있습니다 (게임 완료 속도). 내 리더가 (두 번째의 에 가장 높은 시간 형식에 가장 높은 점수를 표시) 아이튠즈 커넥트에서 I 설정이 내 사용자의 점수를 받게됩니다 있도록GameKit이 다른 점수 유형을 전송합니다.

어떻게 설정 내 reportScore: 방법을 시간 형식?

NSTimeInterval으로 보내고 싶습니다.

애플 문서가 지정하는 방법은 점수로만 정수 허용합니다

나는이에 대한 몇 가지 연구를 한

- (void) reportScore: (int64_t) score forCategory: (NSString*) category 
{ 
    GKScore *scoreReporter = [[GKScore alloc] initWithCategory:category]; 
    scoreReporter.value = score; 

    [scoreReporter reportScoreWithCompletionHandler:^(NSError *error) { 
     if (error != nil) 
     { 
      //handle the score to submit again later 
     } 
    }]; 
} 

업데이트를하고 난 당신이 단지에 점수를 보낼 수 있다는 사실을 알고 Game Center 리더 보드는 int64_t입니다. 그렇다면이 정수의 형식을 지정하여 리더 보드에서 1 초의 시간으로 형식을 지정합니다.

도움 주셔서 감사합니다. Apple's documentation에서

답변

5

: 점수 객체에 의해 제공

값은 디스플레이 용으로 포맷하는 경우에만 게임 센터로 해석됩니다. iTunes Connect에서 순위표를 정의 할 때 점수의 형식을 결정합니다.

즉, 시간을 정수로 변환하여 보내야합니다. 1/100s 정밀도를 원할 경우 부동 소수점 NSTimeInterval에 100을 곱하여 정수 (예 : 1.567s -> 157)로 반올림 한 다음이를 전송하고 이에 따라 리더 보드 형식을 선택할 수 있습니다 ("경과 시간 - 백분의 1 두 번째 ", 내가 정확히 기억한다면).

+0

그래서 리더 보드에 100 분의 1 초의 시간이 걸리도록 설정 한 경우 리더 보드에 100을 보내면 1.00 초로 해석됩니다. – David

+0

@David 예, 값은 100 분의 1 초의 정수입니다. – Arkku