cocos2d小型工程的代码组织结构

来源:互联网 发布:网易我的世界手机版js 编辑:程序博客网 时间:2024/05/22 03:06

一、小型工程通常只有一个Scene,所有的弹窗都在这一个Scene中弹出;

比如:从主菜单界面进入选关界面,点选关卡进入游戏,只是删除一个layer,加载了另一个layer,并没有多个Scene  replace

代码管理上,Scene中只负责弹出各种弹窗,不负责游戏逻辑。游戏逻辑在主游戏场景的Layer中实现。


二、所有子窗口或弹窗,初始化后就不再销毁,或retain后再销毁,目的是保证下次弹出时没有卡顿。如果第一次弹出时有卡顿,就要在Scene初始化时,把弹窗内容new()或create()一次,但不要作为child加到任何node上去;或把弹窗的大背景图切为左右2半,只使用一半,复制另一半拼成全图,可使内存降低到1/4


但这样弹窗中的数据更新就不能在init中更新,必须在init之外另写数据更新的函数,且必须保证弹窗layer每次弹出时更新数据的函数都被调用,比如放在onEnter中执行。


三、Scene的次级弹窗layer,比如选关layer、玩家信息layer等,尽量使用同一模板作为共同父类使用,保证弹出、关闭的动画的一致性。


四、数据跨layer传输

同一种数据的更新,尽量使用数据监听函数统一监听数据变化,不要单独分别调用数据读取函数硬读。这样可以保证数据更新的一致性,不至于多生枝节。


五、状态机

游戏的核心逻辑使用状态机处理,总比分别使用各个按钮事件、滑屏事件链接基本逻辑要清晰有条理的多。


六、任务列表

每日任务之类,单纯保存离散的数据,复杂难记,处理既复杂又易出错;不如存储为任务列表,tablejson表,方便条件判断和数据存取(限于lua)。xcode c++/oc环境,整理为dictionary存储到plist


0 0