Cocos2d-X LUA 入门踩坑之小游戏

来源:互联网 发布:网络课程超星尔雅官网 编辑:程序博客网 时间:2024/05/05 17:16

作为一个刚刚入门的新人,接触cocos2d-x也就半个多月,在这里纯属个人看法以及踩过的一些坑,大神勿喷!
刚开始接触cocos2d-x的时候,在官网下载cocos2d-x最新版,发现与所学教程的版本不太一样,跟着旧版本quick做出来的东西在新版本下根本跑不动,对于旧版本例如quick3.5是已经不再维护了,刚开始跟着视频教程学,真心因为版本的问题快学不下去了,然后看一些cocos2d-x的书籍,虽然明白它是基于c++开发的,看书的时候也只能是大概了解引擎框架里的东西,用法啥的都是靠网上搜索才逐渐明白,但是这却耗费了大量时间,不断地在修复bug。在下载版本的时候建议初学者的可以先下载3.7版本的,里面生成的例子是一款消灭bug的小游戏,对于入门的人来讲还是有很值得借鉴的地方,还可以学习一下mvc框架。
这里写图片描述
本人最开始着手做的是一款打飞机的游戏,对于新手的建议是,即便是界面可以借助cocos studio来做,但是最开始还是手动用代码搭建界面吧,有利于熟悉cocos2d-x。
接下来就讲讲踩过那些坑吧
一、 记得在创建一个飞机精灵的时候把他添加到layer节点上的时候,运行的时候在场景中一直显示不了,其实刚开始不会的时候是在网上搜的,看别人用法是这样,所以感到也很奇怪,最后找到原因是layer没有作为结点添加进场景里。这种属于小问题,估计也是只有入门的人才会被坑到了。
第一行创建应该为 local layer = cc.Layer:create().addTo(self)
这里写图片描述
二、 触摸时间旧版本不适用的问题,建议新手在看到一些api的应用时候如果觉得不适用的话应该去官网看文档搜索一下是否有这个方法,应该如何使用,不过对我来说官网的东西用法说得少,基本上看一下有没有这个方法,然后还有看参数就自己琢磨了。
这里写图片描述
三、 之前就因为在使用坐标转换的时候,也就是世界坐标和相对坐标,使用的函数参数其实是一个,然而我在参数中使用了getPosition(),其实这个方法获取到的是两个参数,那个时候没理解好,其实cc.p()就可以作为一个参数传递进去了。
另外提醒一下新手,坐标转换不要随意使用,之前因为把飞机添加到layer上,触摸移动的时候飞机坐标没有跟着变,才想着用世界坐标,但是随后发现其实没理解好,无论是世界坐标还是相对坐标,都有一个参考点,而且世界坐标有自己的计算方式,要理解好,才能知道如何正确使用
这里写图片描述
四、 在代码中做循环遍历的时候,因为lua中table如果romove掉一个数据的话,后面的数据位置会往前挪,导致遍历的结果不理想,想要移除的对象并没有移除掉,所以可以使用倒序遍历的方法或者while遍历
例如: 1.for ,i paris table do … (为虚变量,就是不需要用到的变量) 2.while i=1,table do
五、 场景重置的时候,当前场景还会保留之前场景中的对象和事件,所以重置的时候应当使用迭代器将所有数据remove掉,以及清除监听事件,并且定时器也要记得关闭掉,否则进程会一直持续
这里写图片描述
六、 还有在循环过程中千万不要改变控制变量的值,否则结果就是你游戏运行多几次,小小的游戏就能卡哭人,后果太严重了,比如你开了个定时器,第一秒的时候遍历十次,第二秒因为变量值的改变,如果是增加,那第二秒就是遍历二十次,第三秒四次,然后一百次等等,结果是不可预知的
七、 提醒一下新手,lua毕竟和c++不一样,在运行游戏时候FPS左下角三行,如果想要去掉的话一定要在场景里使用导演类去除,看了网上教程都是AppDelegate.cpp里面做修改,那应该是c++工程的做法
去除FPS代码 cc.Director:getInstance():setDisplayStats(false)
这里写图片描述
八、 项目打包的时候遇到的坑
在配置的时候几样东西要准备好,ndk,sdk,ant,jdk
在下载ndk版本的时候一定要看跟自己的cocos2d-x版本是适用的,不要盲目下载,还有路径名字一定不能有空格,为了保证绝对不出错,所有的路径名也都最好用英文
这里写图片描述
这里写图片描述
九、 等我飞机小游戏做好的时候,项目也打包完毕的时候,要在手机运行发现在电脑模拟器上游戏可以正常进行,当在手机进行一段时间后再加载csb文件时候居然会出现闪退,那个时候内心是奔溃的,要知道我使用的工具是visual studio,打包编译也是用的命令行,要找闪退的原因都没有头绪了,在别人建议下搭建了eclipse环境,通过连接真机跑项目打印logcat日志才找出问题所在。新手们在搭建eclipse环境的时候也要小心了,最好能真机调试,不要在eclipse上使用模拟器,分分钟坑死人,还卡哭。记得在真机调试的时候先打包编译出现so文件在进行下一步,现在打包andorid也不要去使用以前交叉编译的旧方法了。
这里写图片描述
这里写图片描述
这里写图片描述
十、 最后,很感谢在我遇到众多问题的时候交流群的大神给我的帮助,学习编程这东西,在遇到bug又容易钻牛角尖的时候,应该努力寻求的别人的帮助才能获得更多思路。

1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 闲鱼买的东西确认收货有问题怎么办 不让微信好友看到吃鸡的名字怎么办 金鹰贵宾积分卡过期了怎么办 小宝机器人一直停在联网界面怎么办 手机版的有道云笔记忘记邮箱怎么办 钡灌肠复查钡剂排空不良怎么办 两个月宝宝灌肠后不排便怎么办 一岁宝宝肠套叠灌肠后拉肚子怎么办 苹果手机自带的天气没有了怎么办? 衣服在洗衣机里忘记拿出来怎么办 苹果se手机系统占内存太大怎么办 客人把饭店老板打了民警怎么办 商场嫌品牌低端不让入驻怎么办 带着孩子坐飞机座位不在一起怎么办 公司老板跑路了员工该怎么办 超市买的衣服防盗扣忘记取了怎么办 在超市买的衣服那个扣没取怎么办啊 超市散称商品条码老记不住怎么办 app账号密码忘记了怎么办注销难 幼儿老师遇到家长比较孩子该怎么办 发的微信公众号内容重复了怎么办 招嫖诈骗微信转账被骗怎么办 朋友在深圳龙岗被传销骗了要怎么办 怀疑家里人被传销组织骗去了怎么办 怀疑家人被骗进传销了该怎么办 b本扣3分了怎么办2018 抖音里面就剩人头的视频怎么办 自学参加普通高考那小高考怎么办 如果小学生长胸只长了一个该怎么办 脸上毛多导致的毛孔粗怎么办 吃了激素药头发掉的厉害怎么办 剪发的剪子中间的螺丝扣总掉怎么办 染完头发后一段时间长新头发怎么办 睡觉头发老被老公压着怎么办 漆盖关节不自在怎么办?吃什么好 摆床头的位置后面是弧形位怎么办 君子兰的根全烂掉了只剩茎怎么办 老板不发工资怎么办 没签合同的 牙套粘在牙齿上的松了怎么办 缝的线长在肉里怎么办 小孩喜欢用舌头顶牙齿缝怎么办