Swift 精灵是否自动删除?

Swift 精灵是否自动删除?,swift,sprite-kit,skspritenode,skphysicsbody,Swift,Sprite Kit,Skspritenode,Skphysicsbody,我目前正试图在我的游戏中编写一些流星的代码,一旦它们离开屏幕,它们似乎就消失了。但我不确定斯威夫特是否真的在为我自动删除,或者他们是否还在徘徊 我在屏幕顶部启动它们,用physicsBody利用重力将它们降下来 star.physicsBody = SKPhysicsBody(rectangleOf: star.size) 我知道苹果的文档中说“以后,如果精灵从场景中移除或不再可见,SpriteKit可以删除纹理数据,如果它出于其他目的需要该内存。” 但我觉得这有点模糊,只是想确认一下,因为

我目前正试图在我的游戏中编写一些流星的代码,一旦它们离开屏幕,它们似乎就消失了。但我不确定斯威夫特是否真的在为我自动删除,或者他们是否还在徘徊

我在屏幕顶部启动它们,用physicsBody利用重力将它们降下来

star.physicsBody = SKPhysicsBody(rectangleOf: star.size)
我知道苹果的文档中说“以后,如果精灵从场景中移除或不再可见,SpriteKit可以删除纹理数据,如果它出于其他目的需要该内存。”

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


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

否-它不会自动删除

SK文档中的“从场景中移除”并不意味着如果你再也看不到它,这意味着“RemoveFrom…”方法是在讨论中的精灵上调用的

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


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

屏幕外的东西不会自动删除。(不可能,因为SpriteKit无法判断未来的一些程序操作是否会将它们重新带到屏幕上。)@bg2b Ty,那么SpriteKit是否会自动移除精灵,还是我们必须自己手动移除?