0

私は最近GameCenter(実績)を使用していますが、スコアベースの実績を作成する方法しか知りません。どうすればこのようなことができますか?

-(IBAction) {

//Unlock Achievement 

}

私はこれを除いてゲームセンターについて他のすべてを理解しています。ありがとう!

4

2 に答える 2

1

ボタンから IBAction を作成するには、次の 2 つの方法があります。

プログラムで:

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 ファイルにドロップし、接続されて準備が整います。

ここに画像の説明を入力

于 2012-07-18T22:05:56.180 に答える
0

まず、シングルトン ヘルパー クラス (GCAssistant と呼びましょう) を使用して、ゲーム センター固有のアクションを処理することをお勧めします。このチュートリアルで説明したように。

クラス ヘッダーで、アチーブメント 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方法で。頑張ってください。問題があればお知らせください。

于 2012-07-20T08:38:12.900 に答える