我的spritkit
游戏有点问题。
我创造了一个小Jump N Run
游戏,企鹅必须躲避冰山,或者你也可以收集鱼。作为企鹅,你有三条命。这些生命现在到底是因为你已经遇到过三次冰山,我希望它会被自动重定向到一个新的UIViewController
,然后最终可以执行新的动作。我拥有使用xib
文件创建的所有内容,现在只是不知道我是如何将skscene
恢复为UIViewController
gelange ...
如果有人可以帮助我会很棒。 :)
答案 0 :(得分: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)];
}
}
希望它有所帮助。