immutableDictionary不会将对象传递给sprite kit中的下一个场景

时间:2015-01-23 09:59:28

标签: sprite-kit skscene

我知道有几个不同的主题,我读了所有这些,但我的第一个skscene不会将我的字典对象转移到下一个场景。

第一个看起来像:(touchesBegan)menuScene

HelloScene *gameScene1 = [HelloScene sceneWithSize:self.size];
self.userData = [NSMutableDictionary dictionary];
[self.userData setValue:@"1" forKey:@"selectBall"];
[gameScene1.userData setObject:[self.userData objectForKey:@"selectBall"] forKey:@"selectBall"];
[self.view presentScene: gameScene1];

和场景二:(initWithSize)gameScene1

int setBall = [[self.userData objectForKey:@"selectBall"] intValue];
self.selectBall = setBall;

1 个答案:

答案 0 :(得分:1)

作为评论中已提及的LearnCocos2D,您无法访问第二个场景中第一个场景的userData。因此,您必须在打开之前将userData设置为新场景:

- (void) showNewScene {
      SKView *currentView = (SKView *) self.view;
      SKScene *currentScene = [currentView scene];
      HelloScene *gameScene1 = [HelloScene scene];
      [gameScene1.userData setObject:[currentScene.userData objectForKey:@"1"] forKey:@"selectBall"];
      [currentView presentScene:gameScene1];

 }

然后,您可以使用gameScene1方法访问新加载的objectForKey中的userData。

您也可以使用NSUserDefaults进行保存。使用它的好处是,您可以在应用程序的任何位置使用这些信息:

NSString *valueToSave = @"1";
[[NSUserDefaults standardUserDefaults] setObject:valueToSave forKey:@"selectBall"];

如果您想要取回它,只需再次调用您的用户默认值:

NSString *savedValue = [[NSUserDefaults standardUserDefaults]
    stringForKey:@"selectBall"];