Tag: ccspritebatchnode

我如何从GLuint中检索相应的纹理名称?

编辑5:优化级别构build设置: 编辑4:我试图改变构buildconfiguration把所有“debugging”,然后运行“testing”。 奇怪的是,它没有崩溃大约20次(我不断装载和卸载各种GameScenes与不同的资产)。 在第二十一次(即使不是统计上相关的),我还以为它可能不会再崩溃了,但它已经崩溃了。 总结仍然不可用,所以我想知道如果我正确地做,或者如果有一些其他问题..这里是生成configuration和崩溃报告: 编辑3:重要的是,这个错误只发生了一些时间,像6/7运行中的1,所以我觉得很难隔离它。 我有一些严重的麻烦理解哪些纹理获取此NSAssert失败。 我已经尝试了几种方法,但都没有工作(或者最有可能的只是我有点太愚蠢:))。 在debugging器中,我可以看到GLuint信息。 在互联网上阅读,我发现这是一种引用框架(一种指针)的方式。 我认为应该有办法从batchNode plist文件检索框架名称,并想知道如果这个GLuint数字可以以某种方式对应于plist文件中的帧的顺序。 NSAssert( !batchNode_ || texture.name == batchNode_.texture.name , @"CCSprite: Batched sprites should use the same texture as the batchnode"); /** texture name */ @property(nonatomic,readonly) GLuint name; 我尝试了这些方法,但他们捕捉到所有情况: //From CCSprite.m -(void) setTexture:(CCTexture2D*)texture { if(!batchNode_ || texture.name != batchNode_.texture.name) { CCLOG(@""); // I added a debug […]

Cocos2dx 2.1.4游戏,连续性FPS下降,从不恢复

我正在使用cocos2dx 2.1.4创build一个游戏。 它的FPS不断下降,永远不会恢复。 请详细说明如下 关于我做事的方式的背景:关于向下滚动某些形状的游戏,每个形状都由一些方块组成。我有7种块。 所有加载在Sprite Sheet中,并使用这个Sprite Sheet中的这些块创build一个形状。 级别文件由这些形状组成。 我同时加载两个级别在屏幕上和另一个屏幕上,使其无缝滚动。 为了同时加载两个级别,我使用了两个不同的CCSprite游戏批处理节点: CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("56blackglow.plist"); _gameBatchNode1 = CCSpriteBatchNode::create("56blackglow.png", 200); _gameBatchNode1->retain(); this->addChild(_gameBatchNode1,kForeground); _gameBatchNode2= CCSpriteBatchNode::create("56blackglow.png", 200); _gameBatchNode2->retain(); this->addChild(_gameBatchNode2,kForeground); 我面对的问题是,我一直玩的游戏帧率不断下降,从60 fps到10 fps,从不恢复或在不久的将来可能恢复,因为我观察了20分钟,但它太多的时间等待。 我的观察: – 1>我使用时间分析器它显示最大的时间是在draw()调用。 同样,如果我玩的游戏速度非常快,时间的高峰期就会增加,这应该没问题,因为我正在做更多的工作,但是一旦达到高峰,它只能保持在这个高度,即使我离开游戏空闲。 这是正常的吗? 据我说,一旦目前的工作完成,它应该已经恢复到正常的高峰。 2>一些我认为它发生的地方,因为我使用了两个批处理节点,并立即删除其用户的子节点可能会导致它慢,但删除后,它应该运行正常。 给一个想法可以立即从批处理节点中删除10个孩子吗? 有些人说这个过程非常缓慢。 只是为了检查这是否导致问题,我做了: – 而不是去除他们,我只是把儿童的可见性设置为false.But仍然FPS下降,不会恢复。 请分享你的想法。