gpt4 book ai didi

sprite-kit - SKTextureAtlas 加载和内存管理

转载 作者:行者123 更新时间:2023-12-03 21:36:32 24 4
gpt4 key购买 nike

我在 SpriteKit 上开发了一个游戏,每个场景都有多个场景
最少来自 3 个 TextureAtlas
每个 TextureAtlas 中图像的最大大小为 60K
我的游戏因内存问题而崩溃

我在每个场景中所做的是在头文件中定义操作,例如:

initialise them in -(id)initWithSize:(CGSize)size  Function 


@interface FirstLevel : SKScene
{

SKAction *RedBirdAnimation;
}

并在实现文件中:
-(id)initWithSize:(CGSize)size{
if(self=[super initWithSize:size])
{[self setupRedBirdActions];}
return self;
}


-(void)setupRedBirdActions{

SKTextureAtlas *RedBirdAtlas = [SKTextureAtlas atlasNamed:@"RedBird"];

SKTexture *RedBird1 = [RedBirdAtlas textureNamed:@"Redbird_01_iphone.png"];
SKTexture *RedBird2 = [RedBirdAtlas textureNamed:@"Redbird_02_iphone.png"];
SKTexture *RedBird3 = [RedBirdAtlas textureNamed:@"Redbird_03_iphone.png"];

NSArray *atlasTexture = @[RedBird1, RedBird2, RedBird3];

SKAction* atlasAnimation = [SKAction animateWithTextures:atlasTexture timePerFrame:0.2];

RedBirdAnimation = atlasAnimation;}

在我的游戏中是否有加载纹理图集的最佳实践之类的东西
以防止它因内存而崩溃。

我在每个 Skscene 结束时使用 Nil 制作所有 SkAction
并从 All SkSpriteNode 中删除 All action

有什么解决办法吗

最佳答案

Each TextureAtlas is 60K



也许作为一个文件。但这不是内存使用。要计算图像文件的内存使用情况,请获取文件的尺寸并将它们乘以颜色位深度(通常为 32 位 = 4 字节)。

例如,4096x4096 纹理使用 16 MB 的纹理内存(但作为 PNG 文件,它可能远小于 1 MB)。
4096 x 4096 x (32/8) = 16 Megabytes

长话短说:使用 Instruments 来验证您的应用程序的实际内存消耗。

关于sprite-kit - SKTextureAtlas 加载和内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22470907/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com