本来想出一个完整的开发笔记,因为个人原因,代码已经OK了,博客的话就不贴代码了,直接讲解一下整个游戏的设计,更确切的说是新手开发时应该注意的地方。
1.角色类正确的继承和扩展。
我们要封装一个角色类,第一印象就是封装一个继承自sprite的精灵,里面封装好玛丽的动作和角色属性等。继承自sprite是可行的,我们只要重写几个static create函数,然后把这个精灵贴到层上即可。
仔细考虑一下,如果角色要再添加一个特效跟随呢,角色吃到道具出现幻影分身呢?一系列的BT需求会发现继承自sprite其实很鸡肋,会导致代码很臃肿,这不是我们继承的本意。所以我们要采用继承自node来创建角色(当然,也可以继承自layer,他们两个的实现应该是一样的,区别在于触摸时间的响应,我木有用过,^_^),我们可以在node里添加我们想要的cocos2dx的对象来完善角色类。
2.主场景层、游戏层、控制层、展示层、地图层、角色层的关系。
(原谅我不会画图)
首先在写代码之前,我们应该明确整个地图层的关系,不要把所有的东西添加到同一个层中来控制。
主场景层是游戏中最大的一个层,它包含了整个场景中其他的所有节点。
控制层:虚拟遥感所在的层
游戏层:我们所看到的地图和人物所在的层
展示层:一些分数血量等静态的东西。
这么做的好处在后期代码的编写中是显而易见的,特别是对于精灵position的控制,我们不需要使用过多的坐标转换来移动一些角色和地图。
3.TMX地图的设计
在TMX地图中我们也要尽可能的对游戏中不同属性的元素进行划分和分类管理。 同属性的元素应该在同一个Layer里面。如下:
在解析地图的时候,我们就可以实现分层来控制整个地图中的元素。
4.内存的管理
代码中出现了很多的内存泄露,我始终没有查到原因,retain的地方我都是用了release但是还是会有泄露。
在下个项目中是用元素的时候,我想我不会再直接使用create了。而是采用预加载的方式,对所有的材质进行统一管理,读取的时候直接从内存中读取,释放的时候统一释放。