本文基于前面的文章<Cocos游戏MVC框架设计>
制作游戏前
制作游戏前的几步:
- 导入素材,拼好UI,导入游戏的脚本框架,注意:UI上不得手动挂脚本,不得在场景中放任何实体
- 脚本框架有:资源管理,UI管理,声音管理,定时器管理,网络管理,事件管理,配置表管理,相机管理
- 在主场景挂上启动脚本,启动脚本中管理UILoading的预制体,代码挂载并初始化管理模块。
开始制作
在启动脚本的调用真正的游戏入口脚本GameApp,开始游戏时需要经过几个步骤:
- 显示UILoading
- 加载所有的配置表,加载玩家存储的本地数据和网络数据,以供游戏中读取
- GameApp脚本挂载地图生成模块(根据配置表生成地图),玩家数据管理模块
- 加载场景(关卡),显示主页UI ,隐藏Loading界面
如何加载关卡
所有关卡数据都从配置表中读取,每一个关卡都存在一个配置表,配置表中的每一行对应场景中一个物体的类型位置旋转大小信息。获取信息后,再从ModuleInfo配置表中获取该物体对应的预制体路径等信息,并加载到场景中。
注意:设置好摄像机和光照,防止拼接的痕迹穿帮。
如何同步UI
- UI的数据通过PlayData单例类进行管理
- UI加载时,读取数据进行初始化
- 当数据变化时,通过事件系统进行通知
如何创建控制人物
- 通过资源管理模块加载人物预制体,代码挂上脚本GamePlayer,这是一个逻辑组件
- 脚本中需要管理与人物相关的所有属性
- 编写控制物体移动的导航组件,如果使用刚体,需要用导航组件控制刚体的移动,如果要使用,处理好物理和碰撞的分组
- 处理好重力、地面的碰撞检测
- 编写人物移动,攻击等模块,调用动画功能组件实现功能
编写控制和决策模块的代码
- 一般人物通过三种方式进行决策:玩家输入、硬编码逻辑、人工智能
- 获取玩家的输入事件,游戏进行对应的处理
- 在Update里更新人物的速度,位置
控制相机
- 编写相机脚本,初始化时要在正确的位置
- 相机跟随人物
动画控制与管理
- 原则:动画是一个单独的功能组件,不要和逻辑控制组件混在一起写
- 定义动画名到文件名的映射,枚举玩家的状态。什么状态就对应有什么动画。
- 状态切换时播放动画
如何推进游戏
GameManager脚本管理游戏的进程,把游戏分为不同的阶段(GameStart,GameOver)
当满足游戏结束的条件(生命值为零,Boss死亡等),就派送一个GameOver的事件,以isWin为参数,然后在GameManager脚本来监听,GameManager来做UI的变化和游戏状态的管理。
游戏结束后要重置所有状态。