评论

收藏

cocos2d-x学习笔记番外篇04:开发问题汇总01

游戏开发 游戏开发 发布于:2021-06-27 15:49 | 阅读数:572 | 评论:0

1.使用自动适配的HD模式,没法加载资源
再现方法:开启HD适配
pDirector->enableRetinaDisplay(true);
提供了HD资源,但没有提供SD资源,例如:提供了XXXX-hd.png,但没有提供普通的XXXX.png。注意该错误复现率不稳定,必须删除手机中的软件,并且clean项目后才有高几率复现。
现象:在HD手机上加载资源失败,游戏直接卡死
分析:调试发现fullPathFromRelativePath没法获得正确的路径只是直接返回了传参给他的文件名
结论:必须同时提供HD和SD两套图          
2.CCMenu自动适配界面错乱
再现方法:使用CCMenu的自动布局函数,适配临时资源图片,然后换用了更大的图片资源
现象:item按钮位置互相叠加
分析:cocos2d-x的CCMenu有一些很方便的自动布局函数,如alignItemsXXX等,在资源图片足够小的时候,使用这些函数没有关系,如果图片大,在适配时很可能出现位置重叠.  结论:
  不怕麻烦的话,手动控制布局最好
3.XCode4.2,iTouch2 4.21系统,完全默认配置,建hello world,5.01的touch4能跑,4.21的touch2跑不了  再现方法:
  在XCode4.2下,用cocos2d-x模版建立helloworld,插上touch2后,点run,编译成功,但是手机上没有任何反应
  现象:
  手机没有任何反应,控制台也没有输出,在设备控制台上,会有类似下面内容:
unknown lockdownd[16] <Error>: 2ff68000 handle_connection:       Could not receive USB message #6 from Xcode. Killing connection
  分析:
  老版iOS,主要指5.x之前,和5.x的编译参数不同,主要是armv6和armv7的区别,首先按照这个帖子检查自己的设置:
  http://stackoverflow.com/questions/6378228/switching-from-xcode3-to-xcode4-cant-load-programs-onto-older-ipod-touch
  确认无误后,在building setting里面的Architectures中,添加参数armv6
DSC0000.png

  结论:
  最好每个项目在新建时都如此添加,防止忘记
4.如何禁止iOS屏幕自动旋转  在重力感应游戏中,经常会造成屏幕自动旋转的情况,这样会造成屏幕倒置,对操作造成不便,禁止重力感应的方法是:
  在“项目/ios/RootViewController.mm”中,找到如下函数
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { //   return UIInterfaceOrientationIsLandscape( interfaceOrientation );    return interfaceOrientation == UIInterfaceOrientationPortrait;   //填写你需要锁定的方向参数   // switch to this line if you want to set portrait view   // return UIInterfaceOrientationIsPortrait( interfaceOrientation ); }
感谢6群的朋友提供这个方法,我之前知道一个修改引擎源码的方法,这个不用改引擎源码,只改项目代码。