游戏结束 - SpriteKit

时间:2014-03-01 19:50:50

标签: ios iphone sprite-kit

我正在构建一个简单的SpriteKit游戏。我想添加一个Game Over Screen,带一个按钮返回主屏幕。但似乎用SpriteKit做起来并不容易。

我之前在主游戏视图上有一个“后退”按钮,当游戏结束视图加载时,该按钮停留在那里。 Bur使用它并再次播放会使fps下降。那么,有没有办法向SKScene添加按钮?例如,在故事板中创建一个视图控制器并在那里添加按钮,然后让场景出现在那里......

如果您需要任何代码或任何内容,请告诉我,我会发布它。谢谢!

2 个答案:

答案 0 :(得分:1)

最好的方法是将SKNode子类化为SpriteKit中的按钮。

简单示例:

@interface MyButton : SKSpriteNode

@property (nonatomic, readonly) SEL action;
@property (nonatomic, readonly, weak) id target;

- (void)setTarget:(id)target action:(SEL)action;

@end

@implementation SKButton

- (void)setTarget:(id)target action:(SEL)action 
{
    _target = target;
    _action = action;
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{
    UITouch *touch = [touches anyObject];
    CGPoint touchPoint = [touch locationInNode:self.parent];

    if (CGRectContainsPoint(self.frame, touchPoint)) 
    {
        objc_msgSend(_target, _action);
    }
}

@end

或者您可以创建UIButton并将其添加到SKView

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
button.backgroundColor = [UIColor whiteColor];

[skView addSubview:button];

我没有遇到任何表现,但我的测试项目并不复杂。

答案 1 :(得分:0)

好吧,我找到了一个适合我的简单解决方案(至少目前为止)。这是:http://meghagulati.com/2014/01/20/simple-parse-tutorial-with-sprite-kit-game/

作者创建一个节点,然后当触摸节点时,再次加载游戏。代码可以在其网站上看到。