Достижение разблокировки - 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.