0

敵を撃つための基本的なポイント システムを使用するゲームを開発しています。そのスコアは、ゲームで追加の銃のロックを解除するためのコインの値に変換されます。したがって、プレイするとスコアが上がり、死ぬと、スコアと、そのプレイスルーで得たコインの数が画面に表示されます (現時点ではスコア x 10)。

コインの価値を取得し、それを別の画面、銃の選択画面に表示する最良の方法を探しています。最初にプレイすると、それ以降は、1回のプレイスルーで取得したコインが合計コインに追加されます。ガン選択画面に表示される値。そして、それが簡単にできるのであれば、コインの価値を暗号化する方法です。

これは、プレイゲームビューで NSUserDefaults を使用して現在使用しているものです。

NSUserDefaults *coins = [NSUserDefaults standardUserDefaults];
    NSNumber *myCoins = [NSNumber numberWithInt:_killCount*9.4];
    _myCoinsInt = [myCoins integerValue];
    _totalCoinsInt = _myCoinsInt + _totalCoinsInt;
    [coins setObject:myCoins forKey:@"coins"];
    [coins synchronize];

    NSUserDefaults *totalCoins = [NSUserDefaults standardUserDefaults];
    NSNumber *theTotalCoins = [NSNumber numberWithInt:_totalCoinsInt];
    [totalCoins setObject:theTotalCoins forKey:@"totalCoins"];
    [totalCoins synchronize];
    NSLog(@"%@", theTotalCoins);

銃の選択画面の viewDidLoad メソッドの下:

NSUserDefaults *totalCoins = [NSUserDefaults standardUserDefaults];
NSInteger _totalCoinsInt = [totalCoins objectForKey:@"totalCoins"];
NSString *intString = [NSString stringWithFormat:@"%d", _totalCoinsInt];
scoreField.text = intString;
4

3 に答える 3

4

どちらの方法でもコインの量を保存するのが最も簡単な方法だと思います[NSUserDefaults standardUserDefaults]。他の回答が提供した方法で行うことができますが、アプリを閉じるときにそのデータを保存する必要があります。

また、この値をサーバー (サーバーがある場合) にバックアップして、さまざまなユーザーを追跡し、値を保存します。Web サービスをまだお持ちでない場合は、parse.com をチェックしてください。

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
//grab coins
int totalCoins = [defaults integerForKey:@"totalCoins"];

//add coins
totalCoins += coinsThisLevel;

//save
[defaults setInteger:totalCoins forKey:@"totalCoins"];
[defaults synchronize];
于 2012-12-07T22:42:38.663 に答える
1

MVC(model-view-controller)デザインパターンに精通していますか?それがあなたがここで必要とするものです。Coinsクラスを作成し、アプリデリゲートでそのインスタンスを作成し、そのインスタンスをさまざまなViewController間で受け渡すようなことを行います。コインを追加したり、コインの価値を保存したり、必要に応じて暗号化したりするためのメソッドをクラスに含めることができます。KVO(Key-Value Observing)を使用して、コインインスタンスで@propertyの変更を監視できるため、利害関係者は、コインの金額が変更されたときに表示を更新するなどのことができます。

于 2012-12-07T22:40:04.447 に答える
1

スコアについては、NSUserDefault で保存し、ラベルとして保存することをお勧めします。いくつかのコード:

 //Saving
[[NSUserDefaults standardUserDefaults] setInteger:HighScore forKey:@"HighScore"];
    //Loading
    NSInteger highScore = [[NSUserDefaults standardUserDefaults] integerForKey:@"HighScore"];

ドキュメントをチェックしてください: https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/Reference/Reference.html

于 2012-12-07T22:45:10.453 に答える