我正在构建一个简单的SpriteKit游戏。我想添加一个Game Over Screen,带一个按钮返回主屏幕。但似乎用SpriteKit做起来并不容易。
我之前在主游戏视图上有一个“后退”按钮,当游戏结束视图加载时,该按钮停留在那里。 Bur使用它并再次播放会使fps下降。那么,有没有办法向SKScene
添加按钮?例如,在故事板中创建一个视图控制器并在那里添加按钮,然后让场景出现在那里......
如果您需要任何代码或任何内容,请告诉我,我会发布它。谢谢!
答案 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/
作者创建一个节点,然后当触摸节点时,再次加载游戏。代码可以在其网站上看到。