ios - SpriteKit 暂停和恢复 SKView

标签 ios objective-c sprite-kit skview

我想在 SpriteKit 中暂停和取消暂停场景,在同一位置有 2 个按钮。 当场景正在运行时,我想显示“暂停”按钮。 当场景暂停时,我想隐藏“暂停”按钮并显示“播放”按钮。 在 SpriteKit 中,您可以使用在 SpriteKit 中定义的 self.scene.view.paused

我的代码:

@implementation MyScene {

SKSpriteNode *PauseButton;
SKSpriteNode *PlayButton;

}

-(id)initWithSize:(CGSize)size {
if (self = [super initWithSize:size]) {

[self Pause];

}
return self;
}

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

UITouch * touch = [touches anyObject];
CGPoint location = [touch locationInNode:self];

SKNode * Node = [self nodeAtPoint:location];

if([Node.name isEqualToString:@"PauseButton"]){

    self.scene.view.paused = YES;

    [PauseButton removeFromParent];
    [self Resume];
}

if([Node.name isEqualToString:@"PlayButton"]){

    self.scene.view.paused = NO;

    [PlayButton removeFromParent];
    [self Pause];
}
}

-(void)Pause{

PauseButton = [SKSpriteNode spriteNodeWithImageNamed:@"Pause.png"];
PauseButton.position = CGPointMake(self.frame.size.width / 2, self.frame.size.height / 1.04);
PauseButton.zPosition = 3;
PauseButton.size = CGSizeMake(40, 40);
PauseButton.name = @"PauseButton";

[self addChild:PauseButton];

}

-(void)Resume{

PlayButton = [SKSpriteNode spriteNodeWithImageNamed:@"Play.png"];
PlayButton.position = CGPointMake(self.frame.size.width / 2, self.frame.size.height / 1.04);
PlayButton.zPosition = 3;
PlayButton.size = CGSizeMake(60, 60);
PlayButton.name = @"PlayButton";
[self addChild:PlayButton];

}

它暂停了场景,但仍然有暂停按钮,如果我再次触摸暂停按钮,场景将恢复。所以现在只有图像不会改变。我该如何解决这个问题?

最佳答案

当 SKView 暂停时,您无法更新按钮(或场景中的任何其他内容)。在您的 touchesBegan 方法中,您在更新按钮之前暂停 View (更改顺序将不起作用)。您将需要返回到运行循环,以便在暂停游戏之前更新您的按钮。这是一种方法:

这会调用一个方法在短暂的延迟后暂停 View 。在 touchesBegan 中的 [self Resume] 语句之后添加此内容,并删除 self.scene.view.paused = YES

    [self performSelector:@selector(pauseGame) withObject:nil afterDelay:1/60.0];

此方法暂停 SKView。将此添加到您的 MyScene.m

- (void) pauseGame
{
    self.scene.view.paused = YES;
}

关于ios - SpriteKit 暂停和恢复 SKView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25609631/

相关文章:

ios - 在 UINavigationController 中嵌入 View Controller

ios - 如何以父 View 大小的百分比设置 View 的高度

ios - 如何使用 CGPathRef 绘制对象弧线

ios - swift & SpriteKit : Full screen image

android - 可以在 Android 的 RecyclerView 中定义部分吗?

ios - UIView 未在 iPhone App 中更新

iOS Thrift SSL 连接

iphone - 设置 UITableView contentInset 也会插入部分标题 View

ios - 从摄像头或库中选择多个 ImageView 的图像

ios - 如何从内存中删除子类化的 SKNode?