精灵会自动删除吗?

Are sprites automatically removed?

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

我在屏幕顶部启动它们并使用 physicsBody 来利用重力将它们拉下来。

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

我知道苹果文档说 "Later, if the sprite is removed from the scene or is no longer visible, SpriteKit can delete the texture data if it needs that memory for other purposes."

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

但我觉得这有点含糊,只是想确认一下,因为我在屏幕上再也看不到我的星星精灵了,所以我也可以假设它已被删除。

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

否 - 它不会自动删除。

根据 'removed from scene' SK 文档并不意味着如果您再也看不到它,这意味着 'RemoveFrom...' 方法在有问题的精灵上被调用。

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

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