cocos2dx3.0 超级马里奥开发笔记(二)——正确规划游戏的逻辑

       本来想出一个完整的开发笔记,因为个人原因,代码已经OK了,博客的话就不贴代码了,直接讲解一下整个游戏的设计,更确切的说是新手开发时应该注意的地方。


1.角色类正确的继承和扩展----扩展阅读(MVC)。

         我们要封装一个角色类,第一印象就是封装一个继承自sprite的精灵,里面封装好玛丽的动作和角色属性等。继承自sprite是可行的,我们只要重写几个static create函数,然后把这个精灵贴到层上即可。

        仔细考虑一下,如果角色要再添加一个特效跟随呢,角色吃到道具出现幻影分身呢?一系列的BT需求会发现继承自sprite其实很鸡肋,会导致代码很臃肿,这不是我们继承的本意。所以我们要采用继承自node来创建角色(当然,也可以继承自layer,他们两个的实现应该是一样的,区别在于触摸时间的响应,我木有用过,^_^),我们可以在node里添加我们想要的cocos2dx的对象来完善角色类。

        补:今天看子龙山人的blog引用一下

     这个MVC模式和游戏实体组件系统差不多,我在这篇文章里面就有介绍过了。对于这两个系统来说,它的思想都是统一的,那就是不要继承CCSprite并把游戏logic全部塞到sprite里面去。CCSprite应该只负责渲染显示。而且有时候,你可能需要创建很多sprite,我们最好是创建一个CCNode类,然后里面聚合许多sprites。这样CCNode成为了Controller,控制view。当view(比如sprite,effect,gL drawings等等)在屏幕上面移动的时候,controller结点会轮询所有它包含的结点来查询一些游戏相关的状态信息,并且做一些游戏逻辑,然后反过来再更新view。

参考地址:点我!

子龙山人原blog:点我!

2.主场景层、游戏层、控制层、展示层、地图层、角色层的关系。

(原谅我不会画图)

首先在写代码之前,我们应该明确整个地图层的关系,不要把所有的东西添加到同一个层中来控制。

主场景层是游戏中最大的一个层,它包含了整个场景中其他的所有节点。

控制层:虚拟遥感所在的层

游戏层:我们所看到的地图和人物所在的层

展示层:一些分数血量等静态的东西。

cocos2dx3.0 超级马里奥开发笔记(二)——正确规划游戏的逻辑_第1张图片

这么做的好处在后期代码的编写中是显而易见的,特别是对于精灵position的控制,我们不需要使用过多的坐标转换来移动一些角色和地图。

3.TMX地图的设计

在TMX地图中我们也要尽可能的对游戏中不同属性的元素进行划分和分类管理。 同属性的元素应该在同一个Layer里面。如下:

cocos2dx3.0 超级马里奥开发笔记(二)——正确规划游戏的逻辑_第2张图片 cocos2dx3.0 超级马里奥开发笔记(二)——正确规划游戏的逻辑_第3张图片
在解析地图的时候,我们就可以实现分层来控制整个地图中的元素。

4.内存的管理

代码中出现了很多的内存泄露,我始终没有查到原因,retain的地方我都是用了release但是还是会有泄露。
在下个项目中是用元素的时候,我想我不会再直接使用create了。而是采用预加载的方式,对所有的材质进行统一管理,读取的时候直接从内存中读取,释放的时候统一释放。



你可能感兴趣的:(cocos2d-x)