纹理图集中的纹理未加载或出现
Posted
技术标签:
【中文标题】纹理图集中的纹理未加载或出现【英文标题】:Textures from texture atlas are not loading or appearing 【发布时间】:2015-10-09 04:30:53 【问题描述】:由于某些奇怪的原因,我的纹理图集中的纹理没有加载。我不知道为什么。
以下是我通常如何声明/编码纹理
-(SKSpriteNode *)background
SKSpriteNode *background;
NSArray *backgroundIpad;
background = [SKSpriteNode spriteNodeWithImageNamed:@"dodgR - main background"];
background.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame));
background.size = CGSizeMake(1136, 640);
NSArray *backgroundIphone = @[[SKTexture textureWithImageNamed:@"dodgR - animation 1.jpg"],
[SKTexture textureWithImageNamed:@"dodgR - animation 2.jpg"],
[SKTexture textureWithImageNamed:@"dodgR - animation 3.jpg"],
[SKTexture textureWithImageNamed:@"dodgR - animation 4.jpg"],
[SKTexture textureWithImageNamed:@"dodgR - animation 5.jpg"],
[SKTexture textureWithImageNamed:@"dodgR - animation 6.jpg"],
[SKTexture textureWithImageNamed:@"dodgR - animation 7.jpg"],
[SKTexture textureWithImageNamed:@"dodgR - animation 8.jpg"],
[SKTexture textureWithImageNamed:@"dodgR - animation 9.jpg"],
[SKTexture textureWithImageNamed:@"dodgR - animation 10.jpg"]];
SKAction *backgroundIphoneAnimation = [SKAction animateWithTextures:backgroundIphone timePerFrame:0.05];
SKAction *backgroundIphoneRepeat = [SKAction repeatActionForever:backgroundIphoneAnimation];
[background runAction:backgroundIphoneRepeat];
background.name = @"background";
return background;
我的纹理图集的名称是 sprites.atlas 任何帮助将不胜感激,谢谢
【问题讨论】:
尝试从图像名称中删除 .jpg 。如果这没有帮助,请删除模拟器的内容和设置/从设备中删除应用程序,然后再次构建并运行。而且,您如何看待“不加载”?您是否看到缺少资源图像(带有红色 X 的白色图像)或发生了其他事情?另外,您的背景节点是否正确添加到场景中? 所有节点都包含一个红色 X。删除 .jpg 没有帮助 纹理出现在屏幕上的唯一时间是它们不在图集中时 我并没有过多关注您的代码,而是关注您遇到的问题......因此,正如 Beau Young 所说,您必须在代码中正确使用地图集才能从他们。 【参考方案1】:您上面的代码仅在使用不在纹理图集中的图像时才有效,因为它实际上并没有使用纹理图集。
如果不使用 SKTextureAtlas,就无法从 Atlas(据我所知)中提取图像。所以你不能直接抓取这些图像。
斯威夫特:
let atlas = SKTextureAtlas(named: "BackgroundImages") // atlas name
var backgroundFrames = [SKTexture]()
let imageCount = atlas.textureNames.count
for var i=1; i<= imageCount/2; i++
let textureName = "dodgR - animation \(i)"
backgroundFrames.append(atlas.textureNamed(textureName))
OBJECTIVE-C(未测试)
SKTextureAtlas *atlas = [SKTextureAtlas named:@"BackgroundImages"]; // atlas name
NSMutableArray *backgroundFrames = [NSMutableArray new];
int imageCount = atlas.textureNames.count;
for (int i = 1; i <= imageCount/2; i++)
NSString *textureName = @"dodgR - animation \(i)";
[bacgroundFrames addObject:[atlas textureNamed:textureName]];
奖励:Xcode 7 现在允许您在资产文件夹中创建精灵图集。
【讨论】:
以上是关于纹理图集中的纹理未加载或出现的主要内容,如果未能解决你的问题,请参考以下文章
如果我稍后使用 SKTextureAtlas,Sprite Kit 是不是会多次加载纹理图集?