一、主要工作内容
1.MVC架构的搭建
2.对象池的创建
3.导入场景资源
4.实现人物移动控制
二、MVC框架
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
优点:降低视图和模型的耦合度,通过控制器发送信息控制程序内部的信息交互,减少视图与模型的相互调用,提高了应用程序的灵活性和可控性,使得代码更加健壮,复用性更强。
MVC组件关系图
View-视图 抽象类 1、Name 用于各个view之间进行查找、区分-----对应“视图选择”
2、AttentionList 关心事件列表
3、RegisterAttentionEvent 注册关心事件
4、HandleEvent 处理来自Model的事件(参数 事件名称和参数)-----对应“通 知改变”
5、SentEvent 发送事件到Controller-----对应“用户请求”
6、GetModel 获取Model-----对应“状态查询”
Model 数据模型
1、Name 名字,用于区分-----对应“状态改变”
2、SendEvent 发送事件到view(通过MVC这个中介者)-----对应“通知改变”
Controller 控制器
1、Execute 执行事件
2、GetModel GetView 获取Model和View
3、注册model、view、controller
MVC 中介者
1、使用字典存储所有的model、view、controller
2、注册所有的model、view、controller(即将model、view、controller存入 字典)
3、获取model、view(即从字典中取值,所有取值使用之前,必须先注 册进字典中)
4、发送事件(mvc框架通过controller执行事件,动态生成对应的controller, 所以不同的事件对应不同的controller,执行完事件后,view做对应操作)
三、对象池的创建
对象池就存放需要被反复调用资源的一个空间,当一个对象回大量生成的时候如果每次都销毁创建会很费时间,通过对象池把暂时不用的对象放到一个池中,当下次要重新生成这个对象的时候先去池中查找一下是否有可用的对象,如果有的话就直接拿出来使用,不需要再创建,如果池中没有可用的对象,才需要重新创建,利用空间换时间来达到游戏的高速运行效果。如本项目中地图中大量出现的金币,道具,跑道场景等都能通过应用对象池技术提高效率。
四、实现场景轮换
跑道素材是有限的,而游戏中场景是无限的,为了让游戏人物能无止尽的跑下去,需要轮换场景,让人物永远跑在跑道上。 轮换方法:初始化两个跑道,用roadNow ,roadNext 两个变量指向两个跑道进行轮换。为保持人物一直在场景中,将碰撞盒设置在roadNext所指向的跑道前端。当碰撞盒检测到碰撞,回收roadNow ,完成roadNow 和roadNext的赋值交换,生成新的roadNext。
五、实现人物控制
1.手势判断
游戏中人物通过手势控制,有上,下,左,右四种手势状态。 分解手势滑动的方向向量 x方向的位移距离大于y轴方向的距离时,左右移动 x>0向右,x<o向左 x方向的位移距离小于y轴方向的距离时,上下移动 y>0向上,y<o向下
2.更新位置信息
该游戏共设置有三个赛道。角色在中间赛道时,赛道索引值m_nowIndex为1,左边赛道时为0,右边赛道时为2,用于指代角色所在赛道位置。 设置赛道间距为2,当滑动距离大于1.95时认为赛道改变,发送消息更新m_nowIndex的值。 m_nowIndex的值更新完成后,发送消息实现动画播放。
六、第二轮迭代工作展望
1.完善游戏主场景。增加障碍物,金币,守门员,球门。
2.完善UI界面。增加购买功能,换装系统,效果增益。增加音乐素材。