我最近一直在与Game Center合作(成就),我只知道如何做基于成绩的成就。我怎么能这样做?
-(IBAction) {
//Unlock Achievement
}
除了这个,我了解游戏中心的所有其他内容。谢谢!
答案 0 :(得分:1)
以下是从按钮创建IBAction的两种方法:
编程:
UIButton *theButton = [[UIButton alloc] initWithFrame:CGRectMake(160, 240, 50, 20)];
[theButton addTarget:self action:@selector(unlockAch:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:theButton];
然后创建方法:
-(IBAction)unlockAch:(id)sender
{
//Unlock code
}
或者您可以使用界面构建器来完成此操作。创建按钮并按住Ctrl键,单击按钮,然后拖动到.h文件中。您将获得一个弹出窗口,允许您创建一个操作并为其命名:
然后界面构建器会将其放入.h和.m文件中,它将被连接并准备就绪!
答案 1 :(得分:0)
好的,首先我建议您使用单例辅助类(让我们称之为GCAssistant)来处理游戏中心特定的操作。如this教程中所述。
在课程标题中,定义成就ID,以便在编码时更容易提交成就;如下所示:
#define kAchievementChainer @"1C"
#define kAchievementBoardClear @"1A"
#define kAchievement7Games @"1B"
#define kAchievement77Games @"1D"
#define kAchievementBreakAll @"1E"
#define kAchievementMultiplayer @"1F"
在帮助程序类中,这是我用来提交成就的方法:
-(void) reportAchievementWithID:(NSString*) AchievementID {
[GKAchievement loadAchievementsWithCompletionHandler:^(NSArray *achievements, NSError *error) {
if(error) NSLog(@"error");
for (GKAchievement *ach in achievements) {
if([ach.identifier isEqualToString:AchievementID]) { //already submitted
NSLog(@"Already submitted");
return ;
}
}
GKAchievement *achievementToSend = [[GKAchievement alloc] initWithIdentifier:AchievementID];
achievementToSend.percentComplete = 100;
achievementToSend.showsCompletionBanner = YES;
[achievementToSend reportAchievementWithCompletionHandler:NULL];
}];
}
此方法检查之前是否已提交成就;如果不是,则提交。因此,您可以在项目的任何位置执行(只要导入GCAssistant类):
[[GCAssistant sharedInstance] reportAchievementWithID:kAchievementChainer];
它不在文档中,在我观看WWDC 2012视频之前我也不知道这一点,但是如果出现错误,iOS 5会负责重新提交分数/成就。因此,您不必担心为iOS 5及更高版本手动存储未发送的提交等。
对于你的问题,正如你现在猜测的那样,你所要做的就是打电话:
[[GCAssistant sharedInstance] reportAchievementWithID:kYourAchievementID];
在您的IBAction
方法中。祝你好运,如果你有任何问题,请告诉我。