我正在开发一种使用基本点数系统来射击敌人的游戏,然后将该分数转换为硬币值以在游戏中解锁额外的枪支。因此,当你玩游戏时,你的分数会上升,当你死亡时,屏幕上会显示你的分数,以及你从该游戏获得的硬币数量(目前得分为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);
在枪选择屏幕中,在viewDidLoad方法下:
NSUserDefaults *totalCoins = [NSUserDefaults standardUserDefaults];
NSInteger _totalCoinsInt = [totalCoins objectForKey:@"totalCoins"];
NSString *intString = [NSString stringWithFormat:@"%d", _totalCoinsInt];
scoreField.text = intString;
答案 0 :(得分:4)
我认为最简单的方法是以[NSUserDefaults standardUserDefaults]
的方式存储硬币数量,你可以像提供的其他答案一样存储,但是你需要保存那些数据你的应用关闭了。
我还会使用您的服务器(如果有的话)备份此值以跟踪不同的用户并保存值。如果您还没有网络服务,请查看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];
答案 1 :(得分:1)
您熟悉MVC(模型 - 视图 - 控制器)设计模式吗?这就是你需要的。我会做一些事情,比如创建一个Coins类,在app delegate中创建它的一个实例,并在各个视图控制器中传递该实例。您可以在班级中使用方法添加更多硬币,保存硬币值,必要时加密。您可以使用KVO(键值观察)来观察您的硬币实例以更改@property,这样感兴趣的各方就可以在硬币数量发生变化时更新显示内容。
答案 2 :(得分:1)
为了得分,我建议您使用NSUserDefault保存并将其另存为标签。一些代码:
//Saving
[[NSUserDefaults standardUserDefaults] setInteger:HighScore forKey:@"HighScore"];
//Loading
NSInteger highScore = [[NSUserDefaults standardUserDefaults] integerForKey:@"HighScore"];
查看文档:{{3}}