帧同步游戏开发框架(推倒重构版)
来源:互联网 发布:linux fork多个子进程 编辑:程序博客网 时间:2024/06/07 04:10
帧同步消息、对象池、逻辑/视图层对象、事件消息!
1. 帧同步消息
帧同步消息由Msg目录下的几个文件进行管理,所有Input进行的操作皆是SendMsg来开始。
2. 对象池
对象池管理比较复杂, 但是对于整个程序而言十分重要,且可以帮助理清程序的结构,一定程度上帮助实现解耦。
对象池分为两个:LogicObjectPool和ViewObjectPool
每个对象池以字典的形式进行存储,然后字典里每个键值对是以 类型名-堆栈 的形式存在的。即例如Tank逻辑对象,键值对表现为:(string "tank",Stack<LTank>)形式,每增加一种新对象时开一个新的堆栈进行存储。
对象池中的堆栈存储的是LogicObject的基类。当存在已有对象时,可以返回对象,若不存在,则需要根据String调用生成函数生成对应的Object。
....
至于已有对象怎么修改值使得其值属于新生成对象的属性,待讨论。
3. 逻辑/视图层对象
逻辑/视图层对象,在此前已有所涉及,但代码结构略乱,思路驳杂。在此进行大规模的重构。
重构的基础核心思想:生成两个基类:LogicObject和ViewObject基类,这两个类主要实现所有逻辑和视图对象的基本元素,例如LogicObject的移动速度,质量,以及我们会需要用到的其他共有元素等。ViewObject中包括LogicObject,绑定函数,等等。
4. Event事件机制
在逻辑层与视图层之间,可以采用Event事件机制来进行通信。简单来说,就是像Msg那样的发送和处理消息的方法。不过该方法已经封装好了,只需要正确使用即可。用于程序内部的通信,最重要的是可以大大的优化Logic和View之间的通信结构,而且对于解耦很有帮助。
//全局事件 public static EventDispatcher GlobalEventDispatcher = new EventDispatcher();//坦克开火 dispatcher.SendEvent(EventType.TANK_SHOOT, null);//坦克转向 //冷却的时候也瞄准,通知view层朝向 dispatcher.SendEvent(EventType.TANK_AIM, dir);//然后在对应的View视图处理 LTank.dispatcher.AddEventHandler(EventType.TANK_AIM, OnLogicAim); LTank.dispatcher.AddEventHandler (EventType.TANK_SHOOT, OnLogicShoot); LTank.dispatcher.AddEventHandler(EventType.TANK_UPGRATE, OnUpgrate);//我们将dispatcher变量在Logic基类中声明,方便使用//然后在View中定义相关处理即可
5. Manager Input Else
剩下的则是各种管理类和输入处理类,以及其他的如摄像机跟随和适配之类的处理类。
- 帧同步游戏开发框架(推倒重构版)
- 帧同步游戏开发基础
- 帧同步游戏开发基础指南
- LGame游戏开发框架
- 游戏开发框架1
- android 游戏开发框架
- 游戏开发框架libGdx
- 游戏框架开发index
- 游戏开发框架
- 游戏开发框架基础
- 游戏开发框架
- Android游戏开发(一) SurfaceView游戏框架
- Android游戏开发:游戏框架的搭建(4)
- Android游戏开发:游戏框架的搭建(3)
- Android游戏开发:游戏框架的搭建(2)
- Android游戏开发:游戏框架的搭建(1)
- Android 游戏开发----【搭建游戏开发框架】
- 游戏 帧同步 实现
- Sum of Square Numbers问题描述
- CodeForces 311B/CSU 1963 Cats Transport/Feed The Rabbit(斜率优化dp)
- ssm(Mysql)+Redis的Demo
- 暑期学习记录03
- EXCEL排序
- 帧同步游戏开发框架(推倒重构版)
- LightOJ
- hadoop 2.x安装:不能加载本地库
- java文件IO总结
- spring与redis整合(二)--采用spring-data-redis方式
- SpringMVC下,ajax提交数据到Controller方式之一
- 面向对象和面向过程的区别
- UVA
- Unix域socket(总结)