问题标签 [skview]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
750 浏览

swift - Sprites must be cleaned before switch scenes with SpriteKit and Swift?

There are two scenes(scene1, scene2) in my game, both of them have some sprites. scene1 will be presented at first with skView. scene2 will be presented with the same skView when the hero is stronger. In case the hero is weak, scene1 will be presented again. (Here is the question point.) In my case the sprites which were added to the scene1, are added to the scene1 again(I mean they are doubled).

I did another test, where i presented the scene1 just twice one after the other. I got the same issue.

Why is this happened? Does it mean, that I should remove all the sprites on scene1, before I switch to scene2, and add all sprites again when I switch back???

PS: the question is related to How to switch SKScenes in SpriteKit with Swift properly?.

Thanks in advance.

0 投票
0 回答
165 浏览

uiviewcontroller - 如何在游戏开始时隐藏带有单个 UIBarButton 的故事板创建的 UIToolbar,并在游戏结束时取消隐藏

所以我在 UIToolbar 上有一个 UIBarButtonItem,它们是在主情节提要上创建的,然后链接到 ViewController.h 中的 @property 声明。我想在游戏场景(SKScene MyScene)开始时隐藏按钮,并在游戏结束时取消隐藏按钮,并在报告分数后显示游戏结束场景。

在搜索了这个网站后,我发现我可以用两种不同的方式隐藏它,还有其他可能的工作选项。问题是,当我在 - (void)viewWillLayoutSubviews{ [super viewWillLayoutSubviews]; 中设置隐藏按钮所需的值时 在 ViewController.m 部分,我无法更改初始设置值的相对效果,尽管更改了游戏结束时调用的 ViewController.m 的 -reportScore 函数中的值。

隐藏按钮的第一种方法是使用 UIToolbar 上的 alpha 属性,
然后将值设置为 0 或 1.0 以隐藏和显示它。

self.gameCenterToolbar.alpha = 0;

第二种方法是使用 YES 和 NO 为 UIToolbar 设置隐藏属性。
self.gameCenterToolbar.hidden = YES;

为了潜在地帮助其他有类似问题的人,我在这个网站上找到了另外两种建议的方法,但没有尝试过,因为我相信有一个更基本的事情正在发生,我不明白如何让按钮在隐藏后不被隐藏。

第三种方法是创建一个 UIButton 并将行为链接到它,因为它也有一个隐藏的属性。

第四种方法是设置工具栏位置关闭屏幕 是否可以隐藏带有动画的 UIToolbar?

无数天数小时以来,我一直在尝试解决这个问题,并且它阻碍了其他进展,因为在我的游戏中隐藏和取消隐藏按钮是绝对必要的。

预先感谢您花时间帮助我解决我的问题。

这是我认为相关的代码

编辑

我尝试了这两个建议,但它们对我根本不起作用。

  1. 删除并替换 UIToolbar 内容以包含或不包含 barbutton如何从视图中动态隐藏按钮?以及如何显示/隐藏 UIBarButtonItem?

我添加了更新的代码,看起来像这样,但是代码没有任何影响,按钮仍然存在。所以我按照此链接中的建议打印出来以控制台列表。是否可以使用标签访问 UIBarButtonItem?并且列表出来为空

  1. 之后我尝试了使用标签的建议,并编辑了代码,将声明添加到 ViewController.h

-(void)removeFromSuperview;

然后修改 ViewController.m 以包含

但不幸的是 removeFromSuperview 没有编译。

有人对我可能出错的地方有任何想法吗?我认为这与需要设置的动画值有关......是否可以使用标签访问 UIBarButtonItem ?但是当我设置它时,什么也没发生,所以我认为我做错了。

0 投票
1 回答
94 浏览

memory - SpriteKit 内存问题

我是使用 SpriteKit 进行游戏开发的新手,到目前为止一切正常,但不能真正实现内存管理部分。

我创建了第一个 UIViewController 来充当关卡选择器,第二个 UIViewController 在其中呈现游戏的 SKScene。当我从 SKScene 返回到级别选择器并且没有释放任何内存时,就会出现问题。

在游戏 SKScene 中,当用户按下后退按钮转到关卡选择器时,我会发布一条通知,告诉第二个 UIViewController 执行 segue。

您能否帮助我更好地了解 skview 或 skscene 应该在何时何地从内存中释放?

0 投票
0 回答
119 浏览

sprite-kit - ios Sprite Kit - 如何使用关闭按钮添加较小的视图,例如用于设置

我想给用户改变一些选项的可能性。因此,如果单击由 touchevents 和 SKLableNode 构建的“按钮”元素,我想用关闭和其他按钮打开一个较小的模式视图。有人有想法吗?

谢谢。

0 投票
1 回答
600 浏览

ios - SKView gestureRecognizer [UITapRecognizer name]:发送到实例的无法识别的选择器

我正在使用它向我的 SKView 添加手势识别器。它工作正常,当我双击时会调用双击,但是当我触摸屏幕并移动我的手指时,应用程序会因以下错误而崩溃:

为什么会这样?我没有在这个识别器上调用任何“名称”选择器。

我有这个方法:

我注意到,如果我将其注释掉,则没有此类错误,但后来我将其替换为:

并且调试日志中没有任何内容,只是同样的错误。到底是怎么回事?

0 投票
1 回答
435 浏览

swift - SKView 中的 SKSpriteNodes

我试图让我的 SKView 中的所有 SKSpriteNodes 来更改它们的 alpha。这是我的代码:

使用这些代码,节点始终为零,但是当我在我的 gameSKView 中打印什么时,它不是零。

任何人都可以尝试帮助我吗?提前致谢。

0 投票
1 回答
464 浏览

objective-c - 如何在 SpriteKit 场景中降低 UIView 元素

我有一个常规的 SpriteKit 场景。事实上,它是从“Sprite Kit”创建的默认场景,它绘制了宇宙飞船。

我想在背景上画画。

我已成功添加 UIImageView 作为主 skView 的子视图。我可以用线条等来绘制它。

但我似乎无法成功地将 UIImageView 放在主 skview 后面。

我怎样才能做到这一点?这是我的示例代码。

(在 UIImageView 我只是每 0.1 秒绘制一次随机线。)

0 投票
1 回答
198 浏览

objective-c - iOS 7中是否有allowsTransparency的替代方法?

我有一个带有以下代码的 SKView

它在 iOS 8.0 中可以正常工作。问题是...仅适用于 iOS 8.0 及更高版本。

我可以在 iOS 7.0 中使用什么?

0 投票
1 回答
82 浏览

swift - Sprite Kit 视图设置崩溃 (Swift)

我有一个要添加 SKScene 的 UIView。在我声明“skView”的步骤中它崩溃了。

0 投票
0 回答
1169 浏览

ios - gpus_ReturnNotPermittedKillClient 在键盘扩展中使用 SpriteKit 崩溃,因为缺少生命周期事件来暂停 OpenGL

在尝试在 iOS 8 键盘扩展中使用 SpriteKit 时,我遇到了许多崩溃,这些崩溃仅在使用物理设备且未连接到调试器时发生。

如果调试器连接到设备,或者如果在 SIM 中运行,一切都很好。

当没有附加调试器时,我相信扩展的生命周期会略有不同,并且有时键盘扩展会在后台运行,从而导致 OpenGL 崩溃。

苹果技术说明中描述了我们遇到的崩溃。它在 gpus_ReturnNotPermittedKillClient 函数中,Apple 声明它的发生是因为您无法在后台运行 OpenGL,并建议使用 App Delegate 回调来暂停您的 OpenGL 活动。

由于这是一个键盘扩展,因此没有应用程序委托。相反,我们尝试注册应用程序委托生命周期通知:不走运 - 它们不会触发。所以我们尝试使用视图控制器生命周期回调,它仍然不能解决问题。

当这个崩溃发生时,我们是活跃的键盘,并且只是围绕 SpriteKit/SKView 和 UIImage 操作做很多事情,没有明显的理由为什么我们会被后台处理,但是这个崩溃发生了。如果我们确实获得了背景知识,似乎确实会发生同样的崩溃。

最终,我试图弄清楚如何知道我们正在后台运行,并且我们需要暂停 OpenGL。

这是完整的堆栈: