swift - 当我从一个节点切换到另一个节点时,是否应该删除所有 SKSpriteNodes 和 Labels

标签 swift sprite-kit

我的 iOS 游戏有几个场景。我注意到切换场景之间有些滞后,我想知道这是否可能是因为当我转换到另一个场景时我没有从父节点中删除所有节点和标签。转换到另一个场景时,从父节点中删除所有节点是一种好习惯吗?

另外,我注意到当我移除所有节点时,过渡效果有点被破坏,因为屏幕在过渡期间全黑了。

是否可以在过渡到下一个场景后删除(前一个场景的)节点?

最佳答案

当您执行转换时,场景及其节点将从内存中释放,除非您有strong reference cycle。 .另外,你应该知道 SpriteKit 有它自己的 SKTextures 缓存系统,所以并不是所有的内存都会被释放。

滞后可能是由很多事情造成的,有一些可能性:

  1. 如果您在 touchesEnded(或您的自定义按钮回调闭包)上实例化新场景,则可能会导致延迟,因为您在初始化方面做了太多工作。这可以通过,例如,使用在后台运行的闭包预加载场景来解决,当您必须运行过渡时,您已经加载了所有内容。一个例子如下: enter image description here

  2. 也许您使用的 Assets 太大,并且由于加载它们需要更长的时间,所以您存在延迟。例如,您可以通过将不需要 alpha channel 的图像转换为 .jpeg 来解决此问题。 另一种解决方案是预加载 Assets 。下面是一个代码示例。 enter image description here

关于swift - 当我从一个节点切换到另一个节点时,是否应该删除所有 SKSpriteNodes 和 Labels,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39827022/

相关文章:

ios - 在 Swift 中,检测 UITableViewCell 部分中的点击

swift - 如何在 Xcode 中围绕一个点或 UIView 的中心旋转一个 Button?

ios - 当键盘出现时滑动桌面 View

ios - 如何禁用 SpriteKit 节点触摸事件,然后在 25 秒后启用它以被触摸并移动到下一个场景?

ios - Sprite 依次跟随多个 CGPath

swift - SpriteKit 动画

swift - `Model` 类看起来有什么关系?

ios - 有什么办法可以更改通知图像

swift - CGPath 的 PhysicsEditor 多边形路径

swift - 背景图像节点干扰触摸命令