0

我正在开发一款使用基本积分系统射击敌人的游戏,然后将该分数转换为硬币值以解锁游戏中的额外枪支。因此,当您玩游戏时,您的分数会上升,当您死亡时,屏幕会显示您的分数,以及您从该游戏中获得的硬币数量(目前分数 x 10)。

我正在寻找获得硬币价值的最佳方法,并将其显示在另一个屏幕上,即枪支选择屏幕上,在您第一次玩游戏时,从那时起,您从一次游戏中获得的硬币将添加到您拥有的总硬币中,枪选择画面上显示的数值。如果它很容易做到,一种加密硬币价值的方法。

这是我目前在玩游戏视图中使用 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);

在 Gun 选择屏幕中,在 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(模型-视图-控制器)设计模式吗?这就是你在这里所需要的。我会做一些事情,比如创建一个 Coins 类,在应用程序委托中创建它的一个实例,然后在各种视图控制器之间传递该实例。你可以在你的类中有添加更多硬币、保存硬币价值、必要时加密的方法。您可以使用 KVO(键值观察)来观察您的硬币实例以了解对 @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 回答