【问题标题】:Are sprites automatically removed?精灵会自动移除吗?
【发布时间】:2020-06-04 01:38:08
【问题描述】:

我目前正在尝试在我的游戏中编写一些流星,一旦它们移出屏幕,它们似乎就会消失。但我不确定 swift 是否真的会自动为我删除,或者它们是否还在徘徊。

我在屏幕顶部启动它们并使用physicsBody 使用重力将它们向下移动。

star.physicsBody = SKPhysicsBody(rectangleOf: star.size)

我知道苹果文档说“稍后,如果精灵从场景中移除或不再可见,如果 SpriteKit 需要该内存用于其他目的,它可以删除纹理数据。”

https://developer.apple.com/documentation/spritekit/skspritenode/getting_started_with_sprite_nodes

但我觉得这种说法很模糊,只是想确认一下,因为我在屏幕上再也看不到我的星图,我也可以假设它已被删除。

(而不仅仅是在屏幕外的某个地方聚集)

【问题讨论】:

  • 屏幕外的内容不会自动删除。 (不可能,因为 SpriteKit 无法判断某些未来的程序操作是否会将它们带回屏幕。)
  • @bg2b Ty,SpriteKit 是否会自动删除精灵,还是我们必须自己手动完成?

标签: swift sprite-kit skspritenode skphysicsbody


【解决方案1】:

不 - 它不会自动删除。

SK 文档中的“从场景中移除”并不意味着如果您再也看不到它,这意味着在相关精灵上调用了“RemoveFrom...”方法。

如果精灵不可见,那么游戏引擎将不会绘制它,并且可以通过删除它的纹理来优化内存,但精灵仍在被跟踪并碰撞和反弹对象等。

SK 场景向各个方向无限延伸,您设备的屏幕只是场景上的一个可移动窗口。如果您在游戏中决定不再需要移动到屏幕外的精灵,那么您需要代码来检测这一点,然后针对精灵发出“RemoveFromParent”。

【讨论】:

    猜你喜欢
    • 2012-11-27
    • 1970-01-01
    • 1970-01-01
    • 2017-12-09
    • 1970-01-01
    • 1970-01-01
    • 2015-05-20
    • 2023-03-15
    • 2017-05-19
    相关资源
    最近更新 更多