【问题标题】:Passing integer between scenes, iphone game sprite-kit在场景之间传递整数,iphone游戏精灵套件
【发布时间】:2014-02-16 22:49:56
【问题描述】:
我有一个用户在游戏中选择关卡的场景,然后我想切换到用户选择的关卡的游戏场景。我想创建具有正确关卡的游戏场景,但要做到这一点,我需要将一个整数作为关卡编号传递给游戏场景,以便我知道要加载哪个关卡。
我的问题是,我该如何做到这一点?我查看了节点的 userdata 属性,但无法弄清楚如何使用它来完成我想要的。任何帮助将不胜感激。
【问题讨论】:
标签:
ios
iphone
cocoa-touch
sprite-kit
scene
【解决方案1】:
当您在关卡选择场景中调用[self.view presentScene:scene transition:transition] 时,首先使用关卡编号设置您的新场景。所以:
//GameScene.h
//This is the public interface for your game scene
@import SpriteKit;
@interface GameScene : SKScene
@property (nonatomic, assing)NSInteger levelNumber;
@end
然后
//Level Selection Scen
//Select.m
#import "GameScene.h"
... Rest of your code
User selects level and you prepare for transition and call
- (void)transitionToLevel:(NSInteger)level{
GameScene *destinationScene = [[GameScene alloc] initWithSize:self.size];
destinationScene.levelNumber = level;
SKTransition *transition = //Set up transition here
[self.view presentScene:destinationScene transition:transition];
}
在你的游戏场景的实现中
//GameScene.m
#import "GameScene.h"
@implementation GameScene
-(id)initWithSize:(CGSize){
if (self.levelNumber == 1){
[self playLevelOne]; //Where this is where you play your game
}
else if (self.levelNumber == 2){
[self playLevelTwo];
}
}
- (void)playLevelOne{
//Level Implementation
}
- (void)playLevelTwo{
//Level Implementation
}
@end
您将为您计划支持的每个级别执行此操作
【解决方案2】:
// First Scene
NSUserDefaults.standardUserDefaults().setInteger(12345, forKey:"SCORE")
// Second Scene
if let myScore: AnyObject = NSUserDefaults.standardUserDefaults().objectForKey("SCORE") {
println(myScore)
finalScore = myScore as IntegerLiteralType
}