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