如何使用NSUserDefaults将项目添加到NSMutableArray

利亚姆·斯托克姆(Liam Stockhomme)

我正在开发一个游戏,它有50个关卡。我想在完成每个关卡之后解锁每个关卡。现在,我设置了50个SKSpriteNodes标记为1到50的数字,因此它们是编号级别。我希望NSUserDefaults告诉级别选择屏幕,级别完成后用户已解锁新级别。(即,如果用户完成了2级,则解锁3级)。我正在尝试遵循有关如何在NSUserDefaults中保存NSMutablearray的问题的解决方案,但是它对我没有用,因为我不确定如何NSMutableArray在级别选择菜单和当前级别本身中都具有该功能。

这是我尝试过的一些代码:

[[NSUserDefaults standardUserDefaults] setObject:levelAchieved forKey:@"level2"];
[[NSUserDefaults standardUserDefaults] synchronize];

当用户完成1级课程时,我使用了此功能

然后,我尝试调用此命令:

NSMutableArray *levelAchieved = [[[NSUserDefaults standardUserDefaults] arrayForKey:@"level2"] mutableCopy];

告知级别选择场景用户已达到新级别,并在该场景上将其解锁。

但这是行不通的,因为即使我确保导入了带有in的头文件,也无法在两个场景中都使用该数组NSMutableArray *levelAchieved

如何正确添加到数组,但是->这是处理此类问题的正确方法吗?有没有其他方法可以解锁2个场景之间的一系列关卡?

保尔11

NSUserDefaults 这是一种持久保存信息并跨多个类访问信息的有效方法,因此从该角度来看,您的技术没有任何问题。

我要看的是需要存储50个不同的值。如果只能按顺序解锁级别-即您必须先完成所有1-39级,然后才能尝试40级,那么您所需要做的就是存储一个代表最高完成级别的NSInteger。

例如,当您完成38级时,您会做类似的事情

NSInteger highLevel=38;
[[NSUserDefaults standardUserDefaults] setInteger:highLevel forKey:@"highLevel"];

您的应用程序首次运行时,需要将NSUserDefault值设置为0。

没有看到您的代码,我无法准确地给您下一点,但这将是这样的:

NSInteger highLevel=[[NSUserDefaults standardUserDefaults] integerForKey:@"highLevel"];

for (int i=0;i<NUMBEROFLEVELS;i++)
{
    if (i<=highLevel) {
        // TODO Display unlocked level button
    }
    else {
        // TODO Display locked level button
    }
}

请注意,将highLevel设置为0实际上会解锁级别1,因为数组的第一个元素实际上将为0。当highLevel为1时,元素0和1(级别1和2)将被解锁,依此类推...

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法将NSMutableArray添加到NSMutableArray

来自分类Dev

无法将NSMutableArray添加到NSMutableArray

来自分类Dev

如何使用Swift将项目添加到UITableView?

来自分类Dev

如何使用QSqlQueryModel将项目动态添加到QComboBox

来自分类Dev

如何使用C#将项目添加到TreelistEx?

来自分类Dev

如何将密钥添加到NSMutableArray

来自分类Dev

如何将Nsmutabledictionary数据添加到Nsmutablearray中?

来自分类Dev

如何使用委托将对象添加到NSMutableArray?

来自分类Dev

将更新坐标添加到NSMutableArray

来自分类Dev

尝试将NSMutableDictionary添加到NSMutableArray

来自分类Dev

将几个NSString添加到NSMutableArray

来自分类Dev

将NSString添加到NSMutableArray崩溃

来自分类Dev

如何使用AngularFire将项目添加到列表中某个项目内的特定词典中?

来自分类Dev

如何将OpenSSL添加到Xcode项目

来自分类Dev

如何自动将编译日期添加到Java项目

来自分类Dev

如何将项目添加到.dockerignore?

来自分类Dev

如何将ICU库添加到项目?

来自分类Dev

如何将logback添加到gradle项目

来自分类Dev

如何将ParseUI添加到快速项目

来自分类Dev

如何将Gson Extras添加到Android项目?

来自分类Dev

如何将android项目添加到git

来自分类Dev

如何将FastMM添加到C ++ Builder项目?

来自分类Dev

如何将项目添加到UITableView?

来自分类Dev

如何将NSAppTransportSecurity添加到Cordova项目

来自分类Dev

如何将项目动态添加到WrapPanel?

来自分类Dev

如何将项目添加到数组列表的数组

来自分类Dev

如何将DLL添加到Qbs项目

来自分类Dev

如何将项目添加到IEnumerable SelectListItem

来自分类Dev

如何将Eigen库添加到C ++项目

Related 相关文章

热门标签

归档