aan*_*nrv 5 objective-c ios sprite-kit skscene
我的情况是,我有一个GameMenuScene用户选择一个级别后,我想呈现LevelScene.但我不希望有以前GameMenuScene被丢弃,因为LevelScene实际上是一个@property的GameMenuScene,以及是否在用户完成水平将被保存为@property的LevelScene,其GameMenuScene应当能够在用户完成后进入或退出的水平.如果我只是使用presentScene:transition,GameMenuScene则丢弃并且信息无法传回.
我的问题:有没有办法将场景叠加或推到彼此之上而不丢弃之前的场景(最好是使用过渡动画)?我在找不到SKScene的Apple文档中找不到这种特定用途的方法.
注意:另一个StackOverflow对类似问题的回答建议创建一个新的UIViewController,出现LevelScene在那里然后呈现UIViewController模态.但是我希望在Apple文档中有一个现有的方法,我错过了以模态方式呈现场景本身而无需创建UIVIewControllers.
SKScenes 没有类似导航控制器的功能,可以让您推送和弹出场景。您将需要编写代码来管理和呈现您的场景。
这是一个简单的视图控制器实现,允许您在两个场景之间切换(通过滑动),而无需丢弃另一个场景。
@interface ViewController()
@property BOOL viewFlag;
@property SKScene *scene1;
@property SKScene *scene2;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Configure the view.
SKView * skView = (SKView *)self.view;
skView.showsFPS = YES;
skView.showsNodeCount = YES;
UISwipeGestureRecognizer *swipeGesture = [[UISwipeGestureRecognizer alloc]
initWithTarget:self action:@selector(handleSwipeGesture:)];
swipeGesture.direction = UISwipeGestureRecognizerDirectionRight;
[self.view addGestureRecognizer:swipeGesture];
// Create and configure scene 1.
SKScene * scene = [MyScene sceneWithSize:skView.bounds.size];
scene.scaleMode = SKSceneScaleModeAspectFill;
self.scene1 = scene;
// Present the scene 1.
[skView presentScene:scene];
// Create and configure scene 2.
scene = [MySecondScene sceneWithSize:skView.bounds.size];
scene.scaleMode = SKSceneScaleModeAspectFill;
self.scene2 = scene;
}
- (void) handleSwipeGesture:(id)sender
{
SKView * skView = (SKView *)self.view;
_viewFlag = !_viewFlag;
if (_viewFlag) {
[skView presentScene:_scene1];
}
else {
[skView presentScene:_scene2];
}
}
@end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1329 次 |
| 最近记录: |