我如何摆脱sktextures?
-
21-12-2019 - |
题
也许这很容易,但我丢失了。
我有一个项目,我必须制作一个使用8 jpgs来模拟页面打开的全屏动画。所以我正在做的是:
- 我有一个skspriteNode,在全屏上显示
- 制作8个sktextures的数组
- 使用sktexture preloadtextures加载它们
- 一旦它们加载,我使用AnimateWithTextures来显示动画
- 稍后,另一种方法从场景中删除skspriteNode。
当我第一次执行页面时,它使用一吨内存,但是当我在它上运行removeFromparent时,将继续使用内存。
我的.m文件在顶部声明它:
SKSpriteNode *pageTurnNode;
.
因为我希望能够在这两种方法中轻易引用它。
如何摆脱所有这些纹理和whatnot?
解决方案
纹理可能无法立即从内存中释放。显然精灵套件采用缓存系统。它会在看到适合时去除缓存的纹理。
那是什么@prototypical说。
其他提示
这似乎非常有价值,并且涉及这个问题,我觉得。
由+纹理的底层内存为+纹理:5月或5月 切换到新Skscene时,否(通常不是)被释放。你 不能依赖它。 iOS释放缓存的内存 +纹理yithimagenamed:或+ ImageNamed:当它看到适合时,例如当它检测到低内存条件时。
如果您希望在您完成后立即发布的内存 纹理,您必须避免使用+纹理WithImagenamed:/ + ImageNamed :. 一个替代品创建sktextures 是:
- 创建UIImages与+ imageWithContentsOffile:
- 通过调用sktexture / + resencewithimage从生成的UIImage对象中创建Sktextures :( UIImage *)。
从这个答案中拉了: iOS 7 Sprite套件释放内存
不隶属于 StackOverflow