如何在动画后删除SKTexure

时间:2016-10-02 16:12:17

标签: swift xcode sprite-kit swift3

我正在使用SKTextures

var texture1 = SKTexture()
var texture2 = SKTexture()

和SKActions

SKAction.animate(with:[texture1, texture2])

用于在我的游戏中设置动画SKSpriteNodes。

但是当动画完成时,内存中包含纹理。动画完成后如何从内存中删除所有纹理? 当我来到另一个SKScene内存是免费的,但我需要在转换前的空闲内存。 对不起我的英语不好 我正在使用SWIFT 3

1 个答案:

答案 0 :(得分:0)

由于缓存系统,纹理可能无法从内存中释放。

您可以在运行操作时使用completion,例如:

self.run(SKAction.animate(with:[texture1, texture2]), completion: {
   //animation is ended, do other stuff
})

查看this答案以获取更多详细信息。

来自官方docs

  

纹理数据准备在以下情况下渲染:

     

使用纹理的精灵或粒子是节点树的一部分   正在呈现。

     

一旦SKTexture对象准备好渲染,它就会一直保持准备状态   将删除对纹理对象的所有强引用。 ......

     

没有   必须加载这些纹理,因为它们的数据已经在内存中   创建纹理时。但是,纹理必须仍然是   由SpriteKit准备,然后才能用于渲染。

没有选项(现在 - Swift 3)直接从内存中释放这些纹理。无论如何仍然只是nil任务。