不好意思,这几天比较忙,没空上来回复问题。我会用最新的版本测试一下看看。
谢谢,请问进度如何?如果需要更多相关信息请随时问我
那个地图也太小了吧,我在华为的p9上测试都看不清楚是什么东西,也就没看到卡顿了。
不是卡顿而是抖动。我没把整个地图写进代码里,运行时所显示的只是地图上的一个格子(具体来说是一块沙滩连同海水)的动画。动画正常播放的情况下,这个格子下半部的黄色沙滩应该是完全静止不动的(正如pc版运行的效果),但手机上你仔细看可以看到沙滩每一帧都在轻微抖动。上面已经不少人留言说遇到了相同的问题,所以基本可以确定是引擎问题。还请再测试一次,谢谢!
我在上面给出的demo是重现这个bug的最小代码,只改动了HelloWorldScene.cpp,增加了下面这几行(从第75行开始):
/////////////////////////////
// 4. reproduce the bug!
auto spriteFrameCache = SpriteFrameCache::getInstance();
spriteFrameCache->addSpriteFramesWithFile("BabyWarsTextureTile.plist");
auto frames = Vector<SpriteFrame*>();
for (auto i = 1; i <= 8; ++i) {
auto name = std::string("c01_t04_s02_f0") + static_cast<char>(i - 1 + '1') + ".png";
frames.pushBack(spriteFrameCache->getSpriteFrameByName(name));
}
auto bugAnimation = Animation::createWithSpriteFrames(frames, 0.2);
auto bugSprite = Sprite::create();
bugSprite->setPosition(100, 150);
bugSprite->runAction(RepeatForever::create(Animate::create(bugAnimation)));
this->addChild(bugSprite);
这段代码的作用仅仅就是载入了一个plist并用其中某几个图片组成了帧动画并播放。
如果你觉得看不清,可以插入一行:
bugSprite->setScale(3); //或其他数字
相信会看的更清楚。再次恳请百忙之中再测试一下,谢谢了!
ios上重现了,但是android和mac都没重现。
我看看这个问题吧。
OpenGLES2.0标准里面,纹理最大为:2048x2048, 而你用的是4096 × 2048。尝试修改到合理范围内试试?
刚刚测试了,去掉了部分资源把纹理降为20482048,问题依然存在。另外我询问了一些玩家(都是安卓平台不过设备不同),他们当中的大部分人都会遇到抖动和轻微错位的问题,但也有少数没有错误。还请继续跟进,拜托了!
顺便附上20482048的demo:AnimationBug.zip (1.1 MB)
没有这个标准,各个设备不同,iPhone上es2.0支持到4096
好的,我再确认一下。
嗯,是的。从opengles参数拿到的的确为4096。
请问有啥进度没?
还没有进展,还在看。
辛苦了,祝顺利!
能否把c01_t04_s02_f05.png这块的内容都变成黑色?
如果仅仅调试用是可以的,正式游戏内就肯定不行了。或者如果你方便的话,我也可以把碎图发给你,你自己调整下打包设置或颜色什么的?
只是测试。
没事,我自己用软件修改了。
辛苦了,碎图已经私信你了,希望能帮上忙。