Objective c 使用SpriteBuilder告知在暂停菜单中按下哪个按钮

Objective c 使用SpriteBuilder告知在暂停菜单中按下哪个按钮,objective-c,cocos2d-iphone,spritebuilder,Objective C,Cocos2d Iphone,Spritebuilder,我有一个带有暂停菜单按钮的游戏。当我按下游戏场景中的按钮时,一切都会正常暂停,我的暂停菜单会显示出来,然后我可以用一个按钮继续,这也起作用 我有另一个按钮用于重新启动关卡。由于我正在将特定对象加载到游戏中,当我重新启动关卡场景时,我需要删除所有这些对象,否则,添加已添加的子对象时会出现错误。这意味着,当我按“重新启动”删除所有这些对象时,我需要以某种方式与游戏场景进行通信 下面是我的代码。通常我要做的是在暂停场景中创建一个变量,这个变量可以访问我的游戏场景。当按下重启按钮时,我将在暂停场景中更改

我有一个带有暂停菜单按钮的游戏。当我按下游戏场景中的按钮时,一切都会正常暂停,我的暂停菜单会显示出来,然后我可以用一个按钮继续,这也起作用

我有另一个按钮用于重新启动关卡。由于我正在将特定对象加载到游戏中,当我重新启动关卡场景时,我需要删除所有这些对象,否则,添加已添加的子对象时会出现错误。这意味着,当我按“重新启动”删除所有这些对象时,我需要以某种方式与游戏场景进行通信

下面是我的代码。通常我要做的是在暂停场景中创建一个变量,这个变量可以访问我的游戏场景。当按下重启按钮时,我将在暂停场景中更改变量的值,并在游戏场景中使用更新方法,我将能够知道该变量的值何时更改。不幸的是,使用Spritebuilder执行此操作时会出现两个问题。通常,通过在Spritebuilder中执行以下操作来创建新场景

CCScene *pauseScene = [CCBReader loadAsScene:@"PauseScene"];
如果我这样做了,并且我在pause场景中创建了一个变量(如下所示),那么我将无法访问它,因为我将pauseScene创建为CCScene的实例,而不是我的类pauseScene

PauseScene.h

#import "CCScene.h"

@interface PauseScene : CCScene

@property (nonatomic, assign) BOOL restartTapped;

@end
现在,如果我尝试将pauseScene创建为类pauseScene的实例,那么我会从“CCScene*”中得到一个警告分配“pauseScene*”的不兼容指针类型。在运行时,如果我忽略此警告,每当我尝试访问
重启时,
,它会立即出错,并说已将无法识别的选择器发送到实例…。很明显,这是行不通的

我真的不知道该怎么办。下面我有一个关于这个问题的好例子,只需使用上面和下面的
PauseScene.h
。如果你有解决办法,请让我知道我想我只是在问如何使用Spritebuilder从一个类访问另一个类中的变量。

PauseScene.m

#import "PauseScene.h"

@implementation PauseScene

-(void)restartFromPause{
    [self removeFromParent];
    [[CCDirector sharedDirector] resume];
}

@end
#import "MainScene.h"
#import "PauseScene.h"

@implementation MainScene

PauseScene *pauseScene;
float totalTime;

-(void)pauseFromMain {
    pauseScene = [CCBReader loadAsScene:@"PauseScene"];
    [[CCDirector sharedDirector] pause];
    [self addChild:pauseScene];
}

-(void)update:(CCTime)delta{
    totalTime += delta;
    CCLOG(@"total time %f", totalTime);
    CCLOG(@"value of other variable %i", pauseScene.restartTapped); //gives an error, details given in my post
}

@end
mainsecene.m

#import "PauseScene.h"

@implementation PauseScene

-(void)restartFromPause{
    [self removeFromParent];
    [[CCDirector sharedDirector] resume];
}

@end
#import "MainScene.h"
#import "PauseScene.h"

@implementation MainScene

PauseScene *pauseScene;
float totalTime;

-(void)pauseFromMain {
    pauseScene = [CCBReader loadAsScene:@"PauseScene"];
    [[CCDirector sharedDirector] pause];
    [self addChild:pauseScene];
}

-(void)update:(CCTime)delta{
    totalTime += delta;
    CCLOG(@"total time %f", totalTime);
    CCLOG(@"value of other variable %i", pauseScene.restartTapped); //gives an error, details given in my post
}

@end

现在,您只需执行
pauseScene.variableName

即可访问
pauseScene
变量!!!我一直试图找到一种不同的方法来解决这个问题,但这比我打算做的要容易得多。为了将来的参考,如果您需要作为孩子添加场景,您必须添加PauseSecNecScene,而不是pauseScene。