Ios 我应该在sprite工具包的属性中缓存纹理吗?
我正在游戏中使用图像资源的地图集。在游戏场景开始时,我正在使用SKTextureAtlas PreloTextureAtlass预加载我的所有地图册,这在我开始使用它时产生了很大的不同。我的问题是: 我是否应该为每个纹理创建一个属性,这些纹理将一次又一次地应用于繁殖的怪物或拾取精灵?还是因为我在游戏场景中预装了我的地图集,所以完全没有必要增加开销 下面是怪物类中两个非常简单的例子 缓存纹理:Ios 我应该在sprite工具包的属性中缓存纹理吗?,ios,objective-c,caching,sprite-kit,sktexture,Ios,Objective C,Caching,Sprite Kit,Sktexture,我正在游戏中使用图像资源的地图集。在游戏场景开始时,我正在使用SKTextureAtlas PreloTextureAtlass预加载我的所有地图册,这在我开始使用它时产生了很大的不同。我的问题是: 我是否应该为每个纹理创建一个属性,这些纹理将一次又一次地应用于繁殖的怪物或拾取精灵?还是因为我在游戏场景中预装了我的地图集,所以完全没有必要增加开销 下面是怪物类中两个非常简单的例子 缓存纹理: - (id)initWithSize:(CGSize)size { if (self = [su
- (id)initWithSize:(CGSize)size
{
if (self = [super init]) {
SKTextureAtlas * atlas = [SKTextureAtlas atlasNamed:monsterAtlas];
self.monsterFighterTexture = [atlas textureNamed:@"monster-fighter"];
}
return self;
}
- (Monster *)monster
{
Monster * monster = [Monster spriteNodeWithTexture:self.monsterFighterTexture];
return monster;
}
不要缓存纹理
- (Monster *)monster
{
SKTextureAtlas * atlas = [SKTextureAtlas atlasNamed:monsterAtlas];
Monster * monster = [Monster spriteNodeWithTexture:[atlas textureNamed:@"monster-fighter"]];
return monster;
}
使用纹理图集时,使用[atlas TextureName:@monster fighter]生成的每个纹理都将是内存中同一纹理对象的引用。要扩展Okapi已经说明的内容,一旦加载纹理图集并至少有一个强引用,该图集将保留在内存中。有几种方法可以做到这一点。例如,您可以创建一个单例来保存所有地图集或使它们成为类属性。这真的是个人喜好的问题。太好了。谢谢因此,我不应该缓存单个纹理,而应该将atlas缓存在属性中,并使用TextureName访问纹理。