mutableDictionary 不会将对象转移到精灵工具包中的下一个场景

mutableDictionary doesn´t transfer objects to next scene in sprite kit

我知道有几个不同的主题,我阅读了所有这些主题,但我的第一个 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;

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];

 }

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

你也可以使用 NSUserDefaults 来保存它。使用它的好处在于,您可以在应用程序的任何地方使用这些信息:

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

如果你想取回它,只需再次调用你的 userdefaults:

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