Sprite Kit 动画:Atlas 错误
Posted
技术标签:
【中文标题】Sprite Kit 动画:Atlas 错误【英文标题】:Sprite Kit Animation: Atlas Error 【发布时间】:2014-05-07 21:40:01 【问题描述】:我将纹理图集拖到我的项目中。图片命名正确(“heliani_1-9”) 动画运行流畅,除了 3 帧,在白地上显示为大红色十字。 (见附件截图)
我的代码有什么问题?
干杯
#import "MRMPlayer.h"
@implementation MRMPlayer
-(instancetype)init
self = [super init];
[self setupAnimations];
[self runAction:[SKAction repeatActionForever:[SKAction animateWithTextures:self.runFrames timePerFrame:0.5 resize:YES restore:NO]] withKey:@"heli"];
self.name = playerName;
return self;
-(void) setupAnimations
self.runFrames = [[NSMutableArray alloc]init];
SKTextureAtlas *heliAtlas = [SKTextureAtlas atlasNamed:@"heli"];
for (int i = 0; i < [heliAtlas.textureNames count]; i++)
NSString *tempName = [NSString stringWithFormat:@"heliani_%d",i];
SKTexture *tempTexture = [heliAtlas textureNamed:tempName];
if(tempTexture)
[self.runFrames addObject:tempTexture];
@end
【问题讨论】:
大红色 X 表示在您的图集中找不到图像。确认您拥有所有您认为拥有的图像,用于您的图集中的动画。 我知道,我查了好几遍。他们在那里并正确命名。我什至清理了我的项目几次,尝试了重命名的项目,我没有摆脱它。 s7.directupload.net/images/140507/rxv7kwtk.png 我用我的大眼睛发现图像 6 的命名不一致 :) 不确定这是否会导致您的所有问题,但肯定会有所贡献。 谢谢你,我怎么能这样忽视? :D 不幸的是错误仍然出现:( 我看不出您发布的代码有什么问题。错误可能在您的实际图像中或完全在其他东西中。我建议你试试 Texture Packer。它创建纹理图集,甚至制作动画。您可以在这里下载免费副本@987654322@ 【参考方案1】:转到产品菜单,您将看到Clean
选项。
现在,按住键盘上的option
按钮,文本应变为Clean build folder...
选择该选项,它将另外删除缓存很多东西的衍生数据文件夹,包括纹理图集,我发现会导致您描述的问题。如果您重命名图集中的文件,那通常是我自己遇到此问题的时候。
我不喜欢这个选项是你必须为之工作的东西,如果不需要按住选项键就可以有第二个选项就好了。
如果这不能解决问题,那么你确实有一个命名问题 imo。
注意 您也可以从管理器窗口中删除衍生数据文件夹。
【讨论】:
谢谢,但错误仍然存在。我将自己创建新的 PNG,然后再试一次。我需要一个支持才能支持 cmets(我目前有 14 个)请给我一个支持,我会支持你的答案。干杯 我会检查您的文件名是否与您的代码所查找的内容有任何差异。动画的帧是图集中唯一的帧吗?您正在循环中使用图集的count
属性来确定帧号。因此,如果该图集中除了您的动画之外还有其他纹理,也可能会导致同样的问题。
好的,刚刚注意到您从 0 开始循环,而在您的地图集中,没有 heliani_0
。这可能会导致一个大的红色 x。你做一个测试看看纹理是否存在,可能会在那里扔一个NSLog
,这样你就可以看看如果0
是索引,测试是否为假。
感谢上帝,先生!当然,这就是问题所在。我需要我从 1 而不是 0 开始。你是最棒的!非常感谢!以上是关于Sprite Kit 动画:Atlas 错误的主要内容,如果未能解决你的问题,请参考以下文章
Sprite Kit runAction 延迟,奇怪的错误?
如何通过 Sprite Kit 中的 CGPoints 数组制作动画 - Swift