Cocos2d-x 2.x 项目匹配 iPhoneX 和 iOS11

每年的9月都是一个鬼门关,你永远不知道库克老爷子又能掏出什么宝贝来折腾一下开发者了。本来想着今年总算是例外了,第一时间升级到iOS 11后竟然发现自己做的几个游戏都能正常跑起来,真是活久见。第三方服务竟也没有火急火燎的给我发邮件让赶紧更新sdk。直到年底入了一个iPhoneX真机后,再次感受到了苹果爸爸的爱。 出问题的是一个基于Cocos2d-x 2.1.3 + Box2D的远古项目。简而言之就是在iPhoneX真机上严重掉帧,几乎一秒只有两三帧那种。但是同样一个包,同样一个系统版本号却能在iPhone 7上跑得好好的。 // 因此可以确定是硬件优化相关,跟高层代码逻辑没什么关系了 摊手,隐隐有种直觉觉得可能得升级cocos2d-x到3.x才能搞定,但是仍然抱着...阅读全文

Cocos2d-x中replaceScene引发崩溃的解决

最近在玩Cocos2d-x时发现连续两次replaceScene中,第二次的replaceScene会引发崩溃。replaceScene在cocos2d中的作用即场景转换,使用非常频繁,google了一下发现遇到这个问题的人非常多,但是缺乏令人信服的解决方案。 网上有两个可以解决表面问题的办法。一把replaceScener换成pushScene,二是在转换到新场景时使用渐变等效果。但是这俩方案无异于掩耳盗铃,没有解决根本问题。 崩溃的情境可以用下图表示 而引发崩溃的实际代码在: void CCDirector::setNextScene(void) { // 下面一句导至崩溃 bool runningIsTransition = dynamic_cast(m_pRunningScene) != NULL; bool newIsTransition = dynamic_cast(m_pNextScene) !=...阅读全文