我正在使用SKTextures
var texture1 = SKTexture()
var texture2 = SKTexture()
和SKActions
SKAction.animate(with:[texture1, texture2])
用于在我的游戏中设置动画SKSpriteNodes。
但是当动画完成时,内存中包含纹理。动画完成后如何从内存中删除所有纹理? 当我来到另一个SKScene内存是免费的,但我需要在转换前的空闲内存。 对不起我的英语不好 我正在使用SWIFT 3
答案 0 :(得分:0)
由于缓存系统,纹理可能无法从内存中释放。
您可以在运行操作时使用completion
,例如:
self.run(SKAction.animate(with:[texture1, texture2]), completion: {
//animation is ended, do other stuff
})
查看this答案以获取更多详细信息。
来自官方docs:
纹理数据准备在以下情况下渲染:
使用纹理的精灵或粒子是节点树的一部分 正在呈现。
一旦SKTexture对象准备好渲染,它就会一直保持准备状态 将删除对纹理对象的所有强引用。 ......
没有 必须加载这些纹理,因为它们的数据已经在内存中 创建纹理时。但是,纹理必须仍然是 由SpriteKit准备,然后才能用于渲染。
没有选项(现在 - Swift 3)直接从内存中释放这些纹理。无论如何仍然只是nil
任务。