问题标签 [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 投票
4 回答
8717 浏览

ios7 - iOS7 SKScene 如何让精灵从屏幕边缘反弹?

我正在构建一个球在 iPad 屏幕内弹跳的游戏。类似于乒乓球游戏。我看到 SKScene 的 SKPhysicsWorld 具有重力属性,并且还控制对象如何相互碰撞。

有什么方法可以自动检测精灵的边缘是否与屏幕的边缘碰撞,所以它可以反弹?还是我需要编写自己的碰撞代码?

0 投票
1 回答
581 浏览

objective-c - 向 SKScene 添加新的 SKSpriteNode 具有较大的间歇性滞后

我有一个标准的 UIViewController ( TestViewController ),在这个控制器的viewWillLayoutSubviews方法中,我实例化了一个新的 SKView 子类 ( TestView ),并将它作为子视图添加到控制器的视图中。此外,我添加了一些按钮,这些按钮旨在让用户控制 SKScene 子类 ( TestScene ) 中的操作。TestScene在TestView的init方法中实例化。在 TestView 作为子视图添加到 TestViewController 的视图之后立即调用[testView presentScene]这是TestView上的一个方法,它只是调用[自我presentScene:testScene]

按下TestViewController上提到的按钮意味着调用TestScene上的一个方法(通过TestView),该方法将实例化一个新的 SKSpriteNode 子类(TestSpriteNode)并将其作为子类添加到场景中。这确实有效,但我的问题是,对于第一个要添加的TestSpriteNode , TestScene呈现新的精灵会间歇性地长时间延迟。有时它可以完美运行,但大多数情况下它会卡住,多次触摸按钮后会同时出现多个精灵,之后一切正常。我应该提到这个问题发生在模拟器和我的设备上。

我尝试在TestScene 的- (void)didMoveToView:(SKView*)view中添加一个新的TestSpriteNode ,导致TestSpriteNode立即出现,然后在按下按钮添加新的TestSpriteNode时出现延迟。通过在TestScene上按下按钮调用的方法添加断点,我可以看到它被立即调用,但添加的TestSpriteNode不会立即呈现。

如果已经有一个解决动态添加的 SKSpriteNodes 渲染延迟的答案,我提前道歉,我无法找到它。关于将新的 SKSpriteNodes 添加到 SKScene,我有什么误解吗?

0 投票
6 回答
1139 浏览

ios - 调用 SKLabelNode 时延迟?

从一个过渡到另一个时,我遇到了轻微延迟(滞后)的问题SKScene。通过注释掉我已将其缩小到的各种代码SKLabelNode,我的猜测是它在调用时加载/缓存字体,这会导致在启动新的SKScene.

有没有其他人注意到这一点,当您只使用单个SKScene(如默认模板)时,它就不那么明显了,因为减速只是在通常的启动延迟中迷失了。有谁知道解决这个问题的方法,有没有办法预加载字体?我想我可以UIViewController在启动时加载字体,看看我是否可以从 访问它SKScene,有人有什么想法吗?

0 投票
0 回答
167 浏览

objective-c - SKAction 在 [SKScene enumerateObjectsUsingBlock:] 时不起作用

SKAction在从我的SKScene. 当我尝试这样做时,SKAction 仅在 10-40 的前 2-4 个精灵中执行。如果我发表评论[node runAction:action];并且[node removeFromParent];一切正常。有人可以帮助我,我在这里做错了什么:

如您所见,所有SKActions 都在这里评论并且一切正常,但是我如何使用动画来做到这一点?我已经尝试了很多不同SKAction的 s 甚至sequencegroup, runWithCompletion:- 结果相同,适用于几个 first SKNodes,但尝试运行数十个。

0 投票
1 回答
1576 浏览

ios - iOS7 Sprite Kit 我可以存档整个场景并将其用作保存游戏吗?

我正在查看userDataSKNode 的属性并注意到以下声明:

Sprite Kit 不对节点中存储的数据做任何事情。但是,归档节点时会归档数据。

这让我开始思考——是否可以通过归档场景及其所有依赖项/控制器来实现单个保存游戏功能?

我试图了解是否有一些神奇的 [存档] 消息可以发送到场景或场景视图,以消除编写自定义数据结构来存储保存游戏的需要。

0 投票
2 回答
1155 浏览

objective-c - 更改设备方向时,呈现的 SKScene 变回开始场景

我对使用多个 SKScene 的 Sprite 套件有疑问。每次我更改设备方向时,sprite kit 都会呈现第一个 SKScene。当我翻转 iPhone 时,游戏场景消失,设备显示菜单场景。

我怎样才能解决这个问题?

0 投票
1 回答
721 浏览

ios - 状态恢复,如何拦截和暂停 SKScene

我正在执行绝对基本的状态保存和恢复,应用程序委托中的代码:

我的应用程序也非常简陋,一个包含 SKScene 的单一视图。这段代码运行得很漂亮,当应用中断时会存储应用和场景的状态,并在重新打开时恢复到之前的状态,可爱。

然而,这是一个动作游戏,所以我想给用户一两秒钟,然后在状态恢复后 SKScene 中的动作再次开始......让他们在事情开始之前让他们的手指重新放在控件上,等等移动......所以,我不知道如何做到这一点,在恢复过程回调中的哪个位置(在场景恢复后,我可以让我的代码暂停所有操作一两秒或任何我想要的,然后重新启动我假设有一个我可以利用的回调方法,但不知道它是什么。

0 投票
2 回答
1062 浏览

uiview - UIView 上方的 Sprite 套件场景

我的最终目标是从 UIView 开始,转到 SKScene,然后返回到 UIView。因为这似乎非常困难,所以我的下一个想法是让 UIView 在 SKScene 后面保持活动状态,然后将 SKScene 的 .hidden 值从一个更改为另一个。这可能吗?

提前感谢你的帮助!

0 投票
1 回答
3776 浏览

objective-c - iOS7 Sprite Kit 如何使用 Sprite Kit 重置/开始新游戏?

到目前为止,我一直在开发一款 Sprite Kit 游戏,每次我在 xCode 中点击“播放”按钮时都会启动一个新游戏。现在我正在尝试在游戏中实现一个“新游戏”按钮,它将重置游戏并开始一个新游戏。

为了确保我的旧游戏场景消失并且没有任何悬空引用,我需要采取哪些步骤?

  • 我需要在场景中进行任何类型的手动清理吗?(如在旧的 viewDidUnload 中)还是 ARC 会处理所有事情?
  • 我是否需要明确删除我可能已从场景中添加到其超级视图的任何视图控制器视图?
  • 是否有任何内置方法可以帮助我重置游戏?

这是我到目前为止一直在使用的。

0 投票
3 回答
568 浏览

sprite-kit - 引用 Sprite Kit 中另一个类的场景

好的,我一直在尝试解决这个问题并搜索网络和论坛,但我还没有运气。

我想做的是以下。我有一个 MainMenuScene,它是一个 SKScene。由于我在该场景中添加了许多 SKAction 和其他内容,因此我希望能够将其分解为不同的文件。因此,例如,当玩家按下“设置”按钮时,我会使用不同的文件来编写会发生的事情,而不是使用 MainMenuScene 并使其更大。

所以我的问题是:我希望能够从我的 SettingsSubScene.m 文件中引用 MainMenuScene.m 中的 SKScene。SettingsSubScene.m 如下:

我使用以下代码从 MainMenuScene.m 调用它:

我得到一个 exc_bad_access 错误。当然我做错了,我敢打赌有一种方法可以做到这一点,而不是创建一个大的 MainMenuScene 文件,但我还没有找到它。有人可以帮忙吗?

谢谢