在我的cocos2d游戏中有一些奇怪的事情我无法弄清楚这个问题。
我的游戏有一个非常简单的文件结构,1个介绍层,1个主菜单层,1个游戏层。
在我开发的过程中,我滑过了菜单层,以便游戏从介绍层跳转以节省时间。
现在我完成了游戏,我添加了主菜单,当从它调用游戏层时它会崩溃!! ??
如果我跳过主菜单层,它永远不会崩溃。编辑:
重要的是,如果我删除了主菜单层,它就可以正常使用...主菜单不添加任何纹理图集,只有一个我在整个游戏中使用。
这是消息错误:
"CCSprite: Batched sprites should use the same texture as the batchnode"
来自这个游戏层代码:
_myitens = [CCSpriteBatchNode batchNodeWithFile:@"mytextureatlas.png";
有趣的是主菜单只有图层功能是有一个调用游戏图层的按钮(来自文件的图像而不是纹理图集)....
我很难看到如何解决这个问题
任何提示都有效,谢谢
答案 0 :(得分:0)
一个更常见的原因,特别是如果问题取决于您首先加载的场景,则会在两个地图集中显示相同的图像时发生。
例如,假设您有mytextureatlas.plist和notmytextureatlas.plist,并且两者都包含具有相同名称的图像,请说“player.png”。如果你第一次加载mytextureatlas一切似乎都很好。但是,当您首先加载notmytextureatlas,然后尝试使用mytextureatlas将player.png精灵添加到批处理节点时,cocos2d实际上将使用来自notmytextureatlas的player.png,从而引发此错误。
仔细检查所有纹理图集中的所有图像名称是否唯一。
答案 1 :(得分:0)
如何向_myitems
添加精灵?您正在添加使用不同纹理创建的子项,这是错误的含义以及发生的事情。
异常并非无意义,它意味着一个你无法遵守的精确条件:一个蝙蝠侠必须用与蝙蝠侠本身相同的纹理初始化孩子(这是有道理的,因为它曾用于批量GL调用。)
例如:
_myitems = [CCSpriteBatchNode batchNodeWithFile:@"mytextureatlas.png"];
[_myitems addChild:[CCSprite spriteWithTexture:@"othertexture.png"]];
会产生错误。你应该尝试:
[_myitems addChild:[CCSprite spriteWithTexture:_myitems.textureAtlas.texture]];