问题标签 [skscene]

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 投票
1 回答
1429 浏览

sprite-kit - 如何将 CIPixellate Core Image Filter 添加到 Sprite Kit 场景中?

如何将 CIPixellate Core Image Filter 添加到 Sprite Kit 场景中?

我有一个 SpriteKit 场景,它是 SKScene 或其子类。我想在场景中添加一个核心图像过滤器。特别是一个 CIPixellate 过滤器,所以我可以免费拥有 8 位游戏天堂。

我怎么做?

0 投票
3 回答
131 浏览

ios - 在游戏结束过渡时为 spritekitgame 添加声音

我用精灵套件做了一个游戏。现在我正在尝试实现一些声音效果。我设法做了一些声音效果,但我陷入了每当你输球时我必须实现声音的部分。因此,当物体接触地面时,您会失败。但是当这种情况发生时,它会过渡到另一个场景。所以我希望在过渡到另一个场景之前播放游戏结束声音。这就是我得到的:

Myscene.h

Myscene.m

}

0 投票
1 回答
981 浏览

ios - 错误:其视图不在窗口层次结构中。精灵包

我会尽力解释这一点。好的,我在 xcode5 中使用 SpriteKit。在 Myscene.mi 中有一个方法叫做:

然后在我的 NSTimeintervalUpdate 方法中,我有一个代码说

所有这些代码都会从情节提要中调出我想要的视图控制器,就像它应该没有问题一样,但是在这个视图控制器中,它有一个链接回游戏的按钮。当您单击按钮时,它会按原样返回游戏。好吧,在游戏过程中,它并没有像第一次那样以“3”的分数返回我的 ViewController,它只是继续计数并在日志中提供以下错误消息:

我的意图是拥有我的游戏(Myscene.m),当游戏结束时,是拥有一个游戏结束屏幕(ViewController)。然后从这个视图控制器中,我希望它有一个再次播放按钮,该按钮链接回 Myscene.m(我只是通过制作按钮和控件并拖动到处理我的 SKScene 的视图控制器来完成)并继续重复过程但是它只会执行一次此过程,然后无法循环返回,而是出现上述错误。

任何帮助表示感谢!

0 投票
1 回答
994 浏览

ios - 在 Sprite Kit 中的场景之间导航?

假设我从一个场景开始initialScene。这个场景包含几个按钮。当用户在此场景中点击按钮 A 时,我将呈现sceneA. 所以我的代码看起来像这样:

我的第一个问题是,当sceneA从 中呈现的实例时initialScene,它是堆叠在initialScene实例之上还是替换它?当出现新场景时,实例是否initialScene在内存中被释放?

我问这个是因为sceneA会有一个后退按钮,当点击它时,用户会返回到初始场景。我可以只创建一个 inside 的新实例initialScenesceneA呈现它,还是会导致相同场景的多个实例堆叠在一起?基本上,我可以这样做sceneA吗?:

还是有更好的方法来做到这一点?请让我知道是否有任何方法可以进一步澄清这一点。

0 投票
1 回答
3129 浏览

warnings - UIAlertView warning when dismissing

I'm creating an alert in the following manner:

Works fine. However when I click the 'OK' button to dismiss the alert, I get this:

Warning: Attempt to dismiss from view controller <_UIAlertShimPresentingViewController: 0x16ea2230> while a presentation or dismiss is in progress!

Some context:

  1. The alert is created in didMoveToView(view: SKView!) function of an SKScene.
  2. This is in Xcode 6 beta 3.
  3. my example is swift but this also happens from Objective-C

Any ideas why this warning might be occurring? I don't want to ignore it in case it turns into a fatal error in a future version of iOS.

UPDATE

我还应该补充一点,当警报出现时,当我选择 Debug -> View Debugging -> Capture View Hierarchy 时,警报不会显示在视图的 3d 视图中。我想知道这是否是我做错了什么的症状。

0 投票
1 回答
849 浏览

uiviewcontroller - 如何关闭/删除 SKScene 和视图控制器?

我有 3 个视图控制器。VC1(初始和主屏幕)、VC2(SKScene 和游戏)、VC3(UIViewController 和游戏结束屏幕)。我的问题是当我从 VC1 开始,然后转到 VC2,然后移动到 VC3,然后回到 VC1,它们都堆叠在一起,所以看起来像这样。VC1 - VC2 - VC3 - VC1 - VC2 - VC3 - VC1 - VC2 - VC3 - VC1 - VC2 - VC3,所以最终内存增加,游戏速度急剧下降,最终崩溃。当我移动到 VC2 时,我需要以某种方式释放 VC1,然后在移动到 VC3 时释放 VC2,等等。每次我围绕 VC 进行循环时,我希望它们重新启动,就好像它们以前从未存在过一样。我将提供我如何在所有人之间转移的代码。顺便说一句,在 xcode5 中使用精灵套件。VC = 视图控制器

VC1内部:


VC2内部:


在连接到 VC2 的 SKScene 内部:


VC3内部:


VC1 是一个 UIViewController,VC2 是一个 ViewController,它呈现一个 SKScene,这是我的实际游戏,VC3 是一个 UIViewController。

所以只是重申一下。当我从 VC 移动到 VC 时,它们都相互重叠,增加了内存和 CPU,并降低了游戏的 FPS(每秒帧数),直到最终崩溃。我被告知我需要关闭我的 VC 或从内存中释放它们来解决这个问题,如果这是正确的解决方案,那么我该怎么做呢?如果您有正确的解决方案,请提供一些代码以提供帮助。任何帮助表示赞赏!

0 投票
1 回答
1423 浏览

ios - 在 SpriteKit 中呈现场景而不丢弃之前的场景?

我的情况是我有一个GameMenuScene,在用户选择一个级别后,我想呈现LevelScene. 但我不想GameMenuScene丢弃以前的,因为LevelScene它实际上是一个@propertyofGameMenuScene并且用户是否完成关卡都将保存为一个@propertyof LevelSceneGameMenuScene用户完成或退出关卡后应该能够访问它。如果我简单地使用presentScene:transition,则将GameMenuScene被丢弃,并且信息无法传回。

我的问题:有没有办法在不丢弃前一个的情况下堆叠或推送场景(最好使用过渡动画)?我在 SKScene 的 Apple 文档中找不到用于此特定目的的方法。

注意:另一个 StackOverflow 对类似问题的回答建议创建一个新UIViewController的,LevelScene在其中呈现,然后以UIViewController模态方式呈现。但我希望 Apple 文档中有一个现有的方法,我错过了以模态方式呈现场景本身的场景,而无需创建UIVIewControllers.

0 投票
0 回答
327 浏览

ios - 将 CIFilter 与 SKScene 合成

我试图在图像上使用颜色减淡混合模式(CIFilter)并将其与我的整个场景(这是一个 SKScene 节点)合成。不幸的是,CIColorDodgeBlendMode 只将 CIImage 作为背景的输入。有没有可能的解决方法?

基本上我想要相同的结果,就像在具有 2 层的 Photoshop 中一样,并且上层应用了颜色减淡混合模式。

这是我的代码('self' 将是 SKScene 节点):

0 投票
1 回答
964 浏览

ios - 将 UIScrollView 添加到 SkScene/SkView

TL;DR:我有一个 SpriteKit 游戏,它在 4' 屏幕上看起来很棒,需要快速修复(比如使用滚动视图来包含 SKScene)3.5' 屏幕而无需再次编码所有内容,谢谢!

我目前完成了一个我正在使用 SpriteKit 的游戏,我打算将它上传到 AppStore,但问题是:我设计的游戏可以在 4 英寸屏幕设备上完美运行,所以在 3.5 中它看起来很糟糕,我担心苹果会把游戏还给我来纠正这个问题。因此,我考虑了以下选项:

  1. 使用 ScrollView 通过以下方法呈现场景:

`

`

但是这个方法不起作用,它在尝试将scrollView添加到视图时出现异常。也许我在这里做错了什么?

2.在每一行代码中使用条件来检查设备大小并正确设置图像:这可能是要走的路,但我真的希望有另一种方法,因为主游戏区域依赖于 568 像素的“棋盘”很长,它也可能完全搞乱游戏逻辑。(是的,也许计划不好。

3.在这个答案中使用一些东西:https ://stackoverflow.com/a/19096256/2328918但我认为某些设置也可能会弄乱我的代码。

4.还尝试更改场景的 scaleMode 但似乎也不起作用。

感谢您的建议和提示,我正在寻找“简短”的答案,因为在游戏中添加 Scrollview 只会让 3.5 个用户“玩”游戏,但不能真正解决问题,但我真的很喜欢将其作为 1.0 版发布,然后致力于改善 3.5 屏幕的体验。

0 投票
1 回答
3175 浏览

time - 您如何获得“当前系统时间”?

的文档SKScene -update如下: 文档

究竟什么是“当前系统时间”,除了 via ,我怎么能得到它SKScene -update

我试过CFAbsoluteTimeGetCurrent()了,但显然

返回当前系统绝对时间[,即] 相对于绝对参考日期 2001 年 1 月 1 日 00:00:00 GMT 的秒数。

并且与“当前系统时间”不同,根据我的测试,它的值比“当前绝对时间”小几个数量级。