2014-01-06 51 views
1

我的spritkit遊戲有點問題。 我創造了一個小小的Jump N Run遊戲,企鵝必須閃避冰山,或者你也可以收集魚。作爲一隻企鵝,你有三條生命。這些生命到底是因爲你已經遇到了三次冰山,我希望那一個會自動重定向到一個新的UIViewController,然後最終可以執行新的行動。我已經用xib文件創建了一切,現在只是不知道我是如何將skscene回覆到UIViewController gelange ...如何從SKScene移動到UIViewController

如果有人能幫助我,那將會很棒。 :)

+0

可能有助於此:http://stackoverflow.com/questions/19142632/how-to-perform-segue-from-within-a-skscene-layer-spritekit – nzs

回答

1

最乾淨的解決方案是聲明和實施協議,讓UIViewController知道它應該對SKScene中的更改做出反應。

@protocol MySceneDelegate <NSObject> 
- (void)closeScene; 
@end 

@interface MyScene : SKScene 
@property(nonatomic, strong) SKShapeNode *ball; 
@property (weak) id <MySceneDelegate> delegate; 
@end 

視圖控制器,顯示現場應實行closeScene方法,並設置本身作爲場景的代表。例如:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    // Configure the view. 
    SKView * skView = (SKView *)self.view; 
    skView.showsFPS = YES; 
    skView.showsNodeCount = YES; 

    // Create and configure the scene. 
    MyScene * scene = [MyScene sceneWithSize:skView.bounds.size]; 
    scene.scaleMode = SKSceneScaleModeAspectFill; 

    // Set the delegate 
    [scene setDelegate:self]; 

    // Present the scene. 
    [skView presentScene:scene]; 
} 

然後在現場,你可以調用其設定爲一個委託視圖控制器的closeScene方法:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    /* Called when a touch begins */ 

    if ([_delegate respondsToSelector:@selector(closeScene)]) 
    { 
     [_delegate performSelector:@selector(closeScene)]; 
    } 
} 

希望它能幫助。

相關問題