我正在开发一个简单的游戏,你开始时有三种“特殊技能”。当你点击按钮时,你有两个等等,直到你没有。然而,当我进入一个新阶段时,我又回到了3.这是错误的,我想保持与第一阶段相同数量的“技能”。
我知道这种情况正在发生,因为下面的代码。我正在初始化initWithSize中的“权限”,每次加载我的阶段时都会调用它。
-(id)initWithSize:(CGSize)size level:(int)level {
if (self = [super initWithSize:size]) {
power1=33;
power2=3;
power3=3;
NSDictionary *config=[NSDictionary dictionaryWithContentsOfFile:
[[NSBundle mainBundle]pathForResource:
@"Levels" ofType:@"plist"]];
我编写了我的代码看起来像这样。 因此,如果它是0阶段,我的权力会被初始化为我的状态,当我移动到第1阶段时,它会继续。 然而,当我移到第一阶段时,我的力量是空白/零,因为如果我不在阶段零/空白,我不确定应该是什么条件
-(id)initWithSize:(CGSize)size level:(int)level {
if (self = [super initWithSize:size]) {
// power1=33;
// power2=3;
// power3=3;
NSDictionary *config=[NSDictionary dictionaryWithContentsOfFile:
[[NSBundle mainBundle]pathForResource:
@"Levels" ofType:@"plist"]];
if (level==0) {
power1=33;
power2=3;
power3=3;
}
_level=level;
游戏赢了
GameLevelScene *newScene = [[GameLevelScene alloc] initWithSize:self.size
level:_level+1];
答案 0 :(得分:1)
有几种方法可以做到这一点。我不知道您的完整代码,所以我认为使用NSUserDefaults
可能是您案件中最安全的选择。
在关卡结束时,在进入下一关卡之前,将玩家属性写为NSUserDefaults
,如下所示:
NSString *valueToSave = [NSString stringWithFormat:@"%i",someIntValue];
[[NSUserDefaults standardUserDefaults] setObject:valueToSave forKey:@"Power1"];
[[NSUserDefaults standardUserDefaults]synchronize];
然后在下一级的开头,您可以回读保存的值,如下所示:
NSString *savedValue = [[NSUserDefaults standardUserDefaults] stringForKey:@"Power1"];
if(!savedValue)
{
NSLog(@"no value saved");
} else {
long someIntValue = [savedValue integerValue];
}
如果您对NSUserDefaults有些不熟悉,请阅读NSUserDefaults Class Reference。