Достижение разблокировки - GameCenter iPhone - PullRequest
0 голосов
/ 18 декабря 2010

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

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

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

Спасибо.

Ответы [ 2 ]

2 голосов
/ 18 декабря 2010
    - (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)];

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

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

0 голосов
/ 19 апреля 2011

Кстати, свойство «complete» не всегда устанавливается в YES, если вы установили процентComplete = 100, по крайней мере, не в том же сеансе.Я потратил некоторое время на отладку, почему моя игра награждалась достижениями несколько раз, даже если процентное значение установлено на 100.

...