سؤال

أنا أستخدم الوظيفة أدناه لتقديم النتيجة إلى مركز اللعبة. كيفية تعديل الكود أدناه حتى لا أستطيع إرسال النتيجة إلا إذا كانت أعلى الدرجات المقدمة بالفعل؟ وأنا لا أريد الحفاظ على الدرجات محليا. أي مساعدة؟

- (void) reportScore: (int64_t) score forCategory: (NSString*) category 
{
 GKScore *scoreReporter = [[[GKScore alloc] initWithCategory:category] autorelease]; 
 scoreReporter.value = score;
 [scoreReporter reportScoreWithCompletionHandler: ^(NSError *error) 
  {
   [self callDelegateOnMainThread: @selector(scoreReported:) withArg: NULL error: error];
  }];
}

شكرًا.

تحرير: لقد وجدت للتو أنه يتم التعامل معه من قبل مركز اللعبة فقط ... سيتم عرض الدرجة الأولى فقط على تطبيق Gamecenter.

هل كانت مفيدة؟

المحلول

يمكنك استرداد النتيجة السابقة باستخدام

GKLeaderboard *query = [[GKLeaderBoard alloc] initWithPlayerIDs:[NSArray arrayWithObject:yourPlayerId]];

if (query != nil)

{

    [query loadScoresWithCompletionHandler: ^(NSArray *scores, NSError *error) {

        if (error != nil)

            // handle the error.

        if (scores != nil)

            // process the score information.

        }];

}

احصل على مزيد من المعلومات حول دليل برمجة Apple GameKit

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top