Ios 在Cocos2D中替换场景时共享菜单信息(按钮信息)

Ios 在Cocos2D中替换场景时共享菜单信息(按钮信息),ios,cocos2d-iphone,Ios,Cocos2d Iphone,为了确定所选的级别,我想将所选按钮信息共享到替换的场景。。我该怎么做 CCLabelBMFont *label = [CCLabelBMFont labelWithString:@"Lavel_2" fntFile:@"font.fnt"]; CCMenuItemLabel *titem = [CCMenuItemLabel itemWithLabel:label target:self selector:@selector(sceneLoader:)]; CCM

为了确定所选的级别,我想将所选按钮信息共享到替换的场景。。我该怎么做

CCLabelBMFont *label = [CCLabelBMFont labelWithString:@"Lavel_2" fntFile:@"font.fnt"];
        CCMenuItemLabel *titem = [CCMenuItemLabel itemWithLabel:label target:self selector:@selector(sceneLoader:)];
        CCMenu *menu = [CCMenu menuWithItems: titem, nil];
        menu.position = ccp(screenSize.width/2, screenSize.height/2);
        [self addChild:menu];


- (void)sceneLoader:(id)sender {
    [[CCDirector sharedDirector] replaceScene: [GameLayer scene]];
}

标记您的物品,然后将标记设置为您的游戏玩家

像这样的

titem.tag = 777;

...

- (void)sceneLoader:(CCNode)sender {
    GameLayer *gameLayer = [GameLayer scene];
    gameLayer.gameLevel = sender.tag;

    [[CCDirector sharedDirector] replaceScene: gameLayer];
} 

对于这种操作,我使用单例

文件.h

@interface YourClassName : NSObject
+ (id)sharedInstance;
@property (nonatomic,retain) NSString * selectedLevel;
file.m

@implementation YourClassName
@synthesize selectedLevel;
+ (id)sharedInstance {
    static YourClassName *sharedInstance = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        sharedInstance = [[self alloc] init];
    });
    return sharedInstance;
}

- (id)init
{
    self = [super init];
    if (self) {
        selectedLevel = [NSString string];
    }
    return self;
}
如果您想使用它,只需调用
[[YourClassName sharedInstance]selectedLevel
或set
[[YourClassName]setSelectedLevel]


希望这对您有所帮助。

为您的场景创建单独的初始值设定项。或者至少创建一个带有枚举的初始值设定项:

[[GameLayer alloc] initWithButton:kSceneLoaderButton];