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