我正在尝试编写一种方法来执行上述操作。我的纹理图集包含超过500个纹理。当我将提取的纹理存储在一个新数组中并记录其描述时,数组包含我正确命名的3个纹理加上原始Atlas包含的所有纹理。其中的每一个都被称为“'MissingResource.png'(128 x 128)”。
我的问题是:我怎样才能在新阵列中存储我想要的3个纹理?这是代码:
-(void)createSelectedTexturesWith:(NSString*)ImageName;
{
int bgCount = 1;
NSMutableString *tempstring = [NSMutableString stringWithString:ImageName];
SKTextureAtlas *atlas = [SKTextureAtlas atlasNamed:@"textures"];
NSMutableArray *Leveltextures = [[NSMutableArray alloc]init];
NSUInteger numImages = atlas.textureNames.count;
for (int i=1;i <= numImages; i++) {
[tempstring appendFormat:@"_%02d.png",bgCount];
NSString *textureName = [NSString stringWithString:tempstring];
SKTexture *temp = [atlas textureNamed:textureName];
[Leveltextures addObject:temp];
[tempstring setString:ImageName];
bgCount++;
}
NSLog(@"Leveltextures Content: %@",[Leveltextures description]);
}
答案 0 :(得分:0)
不确定我明白你想要什么。但是,如果我理解正确,为什么你不能只检查textureName的前缀是否与你的imageName匹配,只在这种情况下创建纹理并添加到数组中?
答案 1 :(得分:0)
谢谢你的原型,为我做了这件事。虽然代码可能不太优雅,但在这里。也许它可以帮助别人。
-(void)createSelectedTexturesWith:(NSString*)ImageName;
{
bgCount=1;
NSMutableString *tempstring = [NSMutableString stringWithString:ImageName];
SKTextureAtlas *atlas = [SKTextureAtlas atlasNamed:@"textures"];
NSMutableArray *Leveltextures = [[NSMutableArray alloc]init];
NSArray *atlasArray = [atlas textureNames];
for (NSString *string in atlasArray) {
if ([string hasPrefix:ImageName]){
[tempstring appendFormat:@"%02d.png",bgCount];
NSString *textureName = [NSString stringWithString:tempstring];
SKTexture *temp = [atlas textureNamed:textureName];
[Leveltextures addObject:temp];
[tempstring setString:ImageName];
bgCount++;
}
}
NSLog(@"Leveltextures Content: %@",[Leveltextures description]);
}