Достижение разблокировки - GameCenter iPhone

Я пытаюсь разблокировать достижение в игре, которую я делаю для iPhone, но безуспешно.

Из собственного примера проекта Apple GKTapper, демонстрирующего код Game Center, я скопировал файлы GameCenterManager.h и.m и AppSpecificValues.h в свой проект. Я успешно загрузил достижения и списки лидеров для просмотра.

Однако я не могу понять, как правильно разблокировать достижение. Не могли бы вы указать, как с помощью этого или без GameCenterManager как разблокировать достижение, пожалуйста?

Благодарю.

2 ответа

Решение
    - (void) reportAchievementIdentifier: (NSString*) identifier percentComplete: (float) percent
{
    GKAchievement *achievement = [[[GKAchievement alloc] initWithIdentifier: identifier] autorelease];
    if (achievement)
    {
         achievement.percentComplete = percent;
         [achievement reportAchievementWithCompletionHandler:^(NSError *error)
             {
                  if (error != nil)
                  {
                      // Retain the achievement object and try again later (not shown).
                  }
             }];
    }
}

Вызовите этот метод так:

[self reportAchievementIdentifier:indentifier percentComplete:percent];

Если вы хотите просто разблокировать достижение, позвоните по этому адресу:

[self reportAchievementIdentifier:indentifier percentComplete:100.0];

Вы можете использовать число с плавающей запятой для расчета процента достижения, и если пользователь достигает 100, достижение разблокируется.

Вы также можете сделать это:

[self reportAchievementIdentifier:indentifier percentComplete:((actualpoints/neededPoints)*100.0)];

Необходимые точки означают очки, необходимые для разблокировки этого достижения. Например: actualPoints = 300; requiredPoints = 600;

Он рассчитывает: 300/600 = 0,5 * 100 = 50%

Кстати, свойство "завершено" не всегда имеет значение "ДА", если вы задаете процент Complete=100, по крайней мере, не в том же сеансе. Я потратил некоторое время на отладку, почему моя игра награждалась достижениями несколько раз, даже если процентное значение установлено на 100.

Другие вопросы по тегам