Хорошо, я пытался понять это и искал в Интернете и на форуме, но мне пока не повезло.
Я хочу сделать следующее. У меня есть MainMenuScene, которая является SKScene. Поскольку я добавил несколько SKActions и других вещей в эту сцену, я хотел иметь возможность разбить ее на разные файлы. Так, например, когда игрок нажимает кнопку «Настройки», я бы использовал другой файл, чтобы написать, что произойдет, вместо использования MainMenuScene и сделать его еще больше.
Итак, мой вопрос таков: я хочу иметь возможность ссылаться на SKScene в MainMenuScene.m из моего файла SettingsSubScene.m. 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, но я его еще не нашел. Кто-нибудь может помочь, пожалуйста?
Спасибо