私がXboxユーザですので、実績解除といいますが
プレステならトロフィーですよね。
クリアした際に、アイテムをゲットすると言うか
後でそれを確認出来るような形を実装したいと思い今回考えてみました。
基本的にはスコアの管理と一緒と推測。
ただ、スコアと違って最初からデータをいれておかなくてはいけないことと
クリアしたよ的なフラグを、うけとらないといけないので
最低でも2つずつ記憶していかないといけない。
配列を使うのかなって考えたのですが、
難しいのでそこで思考停止w
頭を一旦リセットして、以前Twitterで教えて頂いた方法
(”文字列”+数値)を使って
フラグと出力したい文字列(実績)を同じ数値で管理すれば簡単!
な気がする。
ということで、こんな感じ
1.一番最初のレイヤー.mで
1 2 3 4 5 |
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; NSMutableDictionary *defaults = [NSMutableDictionary dictionary]; [defaults setObject:@"クリアしたよ!" forKey:@"out_1"]; [defaults setObject:@"NO" forKey:@"flg_1"]; [ud registerDefaults:defaults]; |
2.クリアしたぞ的なレイヤー.mで
1 2 3 4 |
_clear = 1; NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; [ud setBool:YES forKey:[NSString stringWithFormat:@"flg_%i", _clear]]; [ud synchronize]; |
3.実績確認的なレイヤーで.mで
1 2 3 4 5 6 |
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; if ([defaults boolForKey:@"flg_1"]) { [Label setString:[NSString stringWithFormat:@"%@", [defaults stringForKey:@"out_1"]]]; }else{ [Label setString:@"まだクリアしてません"]; } |
と、書いてみました。
書き方はともかく
NSUserDefaultsは本当によく使うなぁと。