2012-07-18 89 views
0

我一直在工作與遊戲中心最近(成績),我只知道怎麼做基礎分數的成績。我該如何做這樣的事情?遊戲中心IBAction爲成就

-(IBAction) { 

//Unlock Achievement 

} 

我瞭解除此之外關於遊戲中心的一切。謝謝!

+0

你到底是什麼意思?一個'IBAction'只是定義了一個附加在界面元素上的動作。您是否嘗試創建一個可以解鎖成就的按鈕或其他UI元素? – 2012-07-18 19:54:50

+0

我只想用一個按鈕來解鎖它。 – 2012-07-18 21:56:33

回答

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文件。你會得到一個彈出窗口,允許您創建一個動作,並給它一個名字:

enter image description here

然後界面生成器將下降到您的.h和.m文件,它會連接,並準備就緒!

enter image description here

+0

那不是問題,我知道如何設置IBAction,但我不知道解鎖成就的代碼。 – 2012-07-18 22:15:57

+0

從你的描述聽起來像是你已經有成就的工作已經和你現在想弄清楚如何使IBAction爲。只需在IBAction中打個電話,即可解鎖您的成就。 – 2012-07-18 22:18:39

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方法。祝你好運,讓我知道如果你有任何問題。