Вернуться к просмотру контроллера от SKScene
Поэтому, когда вы создаете проект, используя шаблон SpriteKit. У вас есть контроллер View и ваш SKScene.
С моего контроллера просмотра я запускаю игру с кодом, заданным по умолчанию, и представляю сцену.
В моем TCAViewcontroller.m
- (IBAction)startGame:(id)sender {
NSLog(@"Start Game triggered");
mainPageImage.hidden = 1;
// Configure the view.
// Configure the view after it has been sized for the correct orientation.
SKView *skView = (SKView *)self.view;
if (!skView.scene) {
skView.showsFPS = YES;
skView.showsNodeCount = YES;
// Create and configure the scene.
TCAMyScene *theScene = [TCAMyScene sceneWithSize:skView.bounds.size];
theScene.scaleMode = SKSceneScaleModeAspectFill;
// Present the scene.
[skView presentScene:theScene];
}
}
Когда пользователь проигрывает в игре, я хотел бы закрыть сцену и вернуться к своему контроллеру просмотра. Похоже, я ничего не могу найти в своих поисках, чтобы вернуться к исходному контроллеру вида, просто нажать на игру поверх сцены. Но я не хочу переходить на другую сцену, просто отмените текущую сцену и вернитесь к моему TCAViewController. Пожалуйста, ответьте, используя код для уточнения. Спасибо
1 ответ
Ваша сцена должна предложить линию связи с вашим контроллером, чтобы указать, что она закончена. Вы можете, например, создать протокол делегата и соответствующее свойство в вашей сцене. Пример:
@protocol TCAMySceneDelegate;
@interface TCAMyScene : SKScene
@property (nonatomic, weak> id<TCAMySceneDelegate> delegate;
@end
@protocol TCAMySceneDelegate <NSObject>
- (void)mySceneDidFinish:(TCAMyScene *)gameScene;
@end
Затем в.m вашего TCAMyScene
- (void)endTheGame {
// Other game-ending code
[self.delegate mySceneDidFinish:self];
}
В вашем контроллере представления установите себя в качестве делегата для вашей сцены и реализуйте метод:
- (IBAction)startGame:(id)sender {
// Other code
TCAMyScene *theScene = [TCAMyScene sceneWithSize:skView.bounds.size];
theScene.scaleMode = SKSceneScaleModeAspectFill;
theScene.delegate = self;
// Other code
}
- (void)mySceneDidFinish:(TCAMyScene *)myScene {
// logic for dismissing the view controller
}