- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想在 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/
我刚刚构建了一个 SpriteKit 演示应用程序。我不在下面的代码下 if let view = self.view as! SKView? { ... } (self.vi
我正在尝试创建一个基于 SpriteKit 的游戏,并尝试在继续之前建立基本的蓝牙连接,但是我的游戏在从菜单转到 GameScene 时崩溃了,并且我收到了“无法转换值”将“UIView”键入“SKV
我有一个 SKView 正在运行以进行游戏,并希望在关卡完成(或失败)时覆盖一个较小的 SKView。当用户选择一个 Action (重启、下一级等)时,我需要关闭这个 SKView([self re
我是 SpriteKit 的新手,看到这样的代码 let skView = view as! SKView 那么这个有什么用呢?另外,我对 view 和 skView、scene 和 GameScen
如题所示,didMove(to view: SKView) 和 didMoveToView(view: SKView) 有什么区别? 我知道 didMoveToView 是方法,并且该 View 在旧
下面的代码显示 SKView,直到您将 skHeight 更改为 2050 或更高的值(例如 5000)。 1) 如何让 SKView 在 2050 或 5000 的高度上也能显示? 2) SKVie
运行我的 SwiftUI 和 SpriteKit 应用程序时,我在日志中收到以下消息: 2019-11-18 21:58:57.631912+0000 PixelBattles[2812:121580
运行我的 SwiftUI 和 SpriteKit 应用程序时,我在日志中收到以下消息: 2019-11-18 21:58:57.631912+0000 PixelBattles[2812:121580
我喜欢我的代码是明确的,所以我想删除 storyboard文件并创建 SKView以编程方式。 到目前为止我已经尝试过: 我创建了一个 SpriteKit xcode 中的游戏项目。 删除了 Stor
class MyClass: UIViewController { var playerViewController = AVPlayerViewController() var playerView
我正在尝试根据我的 userAcceleration 围绕原点旋转我的整个 SKView。虽然旋转单个 Sprite 非常容易。我无法围绕原点旋转整个场景和所有 child 。希望这是有道理的。谢谢。
我是第一次尝试 Sprite 套件。只是为了说明这一点,我已经阅读了文档,但我还不能安静地掌握创建多个按钮的想法。我可以创建按钮。它们出现在我的 View 中,但我无法将功能附加到它们以指向不同的 V
我的默认 UIView 带有两个 subview 。一个是 UIButton,另一个是 SKView。按下按钮会触发 SKView 中的发射器。如果 SKView 不与按钮重叠,则效果很好。然而,一旦
我目前正在制作一个应用程序,该应用程序首先使用 UIKit,然后过渡到 SpriteKit。我现在想从应用程序的 SpriteKit 部分返回到 UIKit。这让我想知道是否有办法使用 Swift 从
我正在尝试使用图案作为 SKScene 的背景颜色: override func didMoveToView(view: SKView) { let backgroundImage:
我在 Storyboard中放置了两个 SKView,并通过 socket 将它们连接起来。他们都在渲染正确的内容,并更新他们的 FPS 显示。我可以更改他们的相机位置,并且两者都可以正确渲染。 但是
我的项目中有这段代码用于练习 SpriteKit。但是,由于某种意外的原因,它给了我这个错误(编译正常)。 仅供引用,我的 HelloScene.h 文件中没有任何内容。我希望这没关系。除了这些代码,
我似乎在我正在开发的游戏中遇到了一个特别奇怪的问题。该游戏包含三种游戏类型,每种类型都使用SKView作为游戏的显示。前两种游戏类型(称为普通游戏和国际象棋)可以正确更改代码中的背景颜色,如下所示:
如何从 SKView 中删除场景。我已经调用了 removeFromParent,将场景设置为 nil,几乎所有我能想到的但场景仍然显示。 最佳答案 我删除场景的方式是正确的,它是 scene.vie
您好,我从主菜单 UIViewController 开始玩我创建的游戏。但是如果我想退出回到主菜单,SpriteKit 中没有 prepareForSegue 函数。 如何从场景中返回主菜单? 我正在
我是一名优秀的程序员,十分优秀!