我正在关注Ray Wenderlich网站上的SpriteKit教程。我用SpriteKit模板创建了一个项目。问题是我的图像显示为一个大的白色矩形,里面有一个大的红色X.日志中没有错误。我也在阅读SpriteKit编程指南和Texture Atlas帮助。我假设这是项目设置问题或文件夹结构问题。我是Xcode的新手。这是我的项目在Xcode中的样子:
MyGameProj (the top level, with the little blue xcode icon)
-->MyGameProj (yellow folder)
-->Assets (yellow folder)
-->Atlases (yellow folder)
-->dungeon.atlas (blue folder)
dungeon_1.jpg
dungeon_2.jpg
dungeon_3.jpg
hero_trans.gif
various .h and .m files
首先,我在Assets
文件夹之外有MyGameProj
个文件夹。没有工作
这是代码。这在MyScene
,initWithSize()
:
SKTextureAtlas *atlas = [SKTextureAtlas atlasNamed:@"dungeon"];
SKTexture *texture = [atlas textureNamed:@"hero_trans.gif"];
self.player = [SKSpriteNode spriteNodeWithTexture:texture];
self.player.position = CGPointMake(100, 100);
[self addChild:self.player];
我已进入构建设置并打开了图集生成。
答案 0 :(得分:3)
我认为你不能在Sprite-Kit
中使用带有纹理地图集的.gif文件。我已经尝试过你的代码了。将.gif文件放在图集之外并使用
相反,spriteNodeWithImageNamed:
有效。
测试1:与你相同的代码,dungeon.atlas中的.gif:不起作用
SKTextureAtlas *atlas = [SKTextureAtlas atlasNamed:@"dungeon"];
SKTexture *texture = [atlas textureNamed:@"Seven_segment_display-animated.gif"];
self.player = [SKSpriteNode spriteNodeWithTexture:texture];
self.player.position = CGPointMake(100, 100);
[self addChild:self.player];
测试2:使用来自dungeon.atlas的.gif spriteNodeWithImageNamed:
创建的节点:不起作用
self.player = [SKSpriteNode spriteNodeWithImageNamed:@"Seven_segment_display-animated.gif"];
self.player.position = CGPointMake(100, 100);
[self addChild:self.player];
测试3:将.gif文件加载到项目本身(不是图册),例如资产文件夹:此工作
self.player = [SKSpriteNode spriteNodeWithImageNamed:@"Seven_segment_display-animated.gif"];
self.player.position = CGPointMake(100, 100);
[self addChild:self.player];