好吧,我一直在试图弄清楚这一点,并搜索网络和论坛,但我还没有运气。引用Sprite Kit中另一个类的场景
我想要做的是以下几点。我有一个MainMenuScene,它是一个SKScene。由于我在该场景中添加了许多SKA和其他东西,我希望能够将其分解成不同的文件。因此,例如,当玩家按下“设置”按钮时,我将使用不同的文件来写入将会发生的事情,而不是使用MainMenuScene,并使其变得更大。
所以我的问题是这样的:我想能够从我的SettingsSubScene.m文件引用MainMenuScene.m中的SKScene。 的SettingsSubScene.m如下:
#import "SettingsSubScene.h"
@implementation SettingsSubScene
{
SKScene *_mainMenuScene;
}
-(id)initWithScene:(SKScene *)mainMenuScene {
_mainMenuScene = mainMenuScene;
return self;
}
-(void)displaySettings {
SKSpriteNode *settingsGearLarge = (SKSpriteNode *)[_mainMenuScene childNodeWithName:@"settingsGearLarge"];
SKSpriteNode *background = [SKSpriteNode spriteNodeWithImageNamed:@"settings"];
background.anchorPoint = CGPointMake(0, 1);
background.position = settingsGearLarge.position;
background.zPosition = 0;
background.xScale = 0;
background.yScale = 0;
[_mainMenuScene addChild:background];
SKAction *appear = [SKAction scaleTo:1.0 duration:0.5];
appear.timingMode = SKActionTimingEaseInEaseOut;
[background runAction:appear completion:^{
[SKActionEffects fullScale:background amount:0.05 forever:YES];
[SKActionEffects fullWiggle:background amount:1 forever:YES];
}];
}
-(void)hideSettings {
}
@end
我使用下面的代码调用它从MainMenuScene.m:
SettingsSubScene *settingsSubScene = [[SettingsSubScene alloc] initWithScene:self];
[settingsSubScene displaySettings];
我得到一个EXC_BAD_ACCESS错误。当然,我做错了什么,我敢打赌,有一种方法可以做到这一点,而不是创建一个大MainMenuScene文件,但我还没有找到它。任何人都可以帮忙吗?
感谢
错误是什么?添加一个异常断点来找出。你有没有得到任何编译器警告?分析并修复它们,他们试图告诉你一些事情。另外,如果您的额外类继承自SK * Node类,则您也可以通过self.scene属性访问场景。 – LearnCocos2D