Unity3D_GameFramework框架_StartForce项目学习_进入流程

   游戏第一步是数据的初始化,这一步使用的框架的流程

一、GameFramework框架的流程

  流程是贯穿游戏运行时整个生命周期的有限状态机。通过流程,将不同的游戏状态进行解耦将是一个非常好的习惯。对于网络游戏,你可能需要如检查资源流程、更新资源流程、检查服务器列表流程、选择服务器流程、登录服务器流程、创建角色流程等流程,而对于单机游戏,你可能需要在游戏选择菜单流程和游戏实际玩法流程之间做切换。如果想增加流程,只要派生自 ProcedureBase 类并实现自己的流程类即可使用。

    继承于ProcedureBase 可以使用生命周期函数,类似于Unity3D的生命周期函数。OnInit初始化、OnEnter每次进入流程、OnUpdate每次帧更新、OnLeave每次离开这个流程时执行OnDestroy游戏退出时执行。

二、流程的使用

  框架的流程组件为Procedure。具体逻辑看不到,但在面板上可以看到,里面存在多个流程类,还有一个Entrance Procedure的下拉列表,这个是选定第一个执行的流程,即运行游戏后的第一个流程。这里选的是ProcedureLaunch。


        ProcedureLaunch类里面主要进行了数据初始化,OnEnter里写的部分数据初始化逻辑,在OnUpdate使用ChangeState函数切换到下一个状态节点ProcedureSplash,在ProcedureSplash状态内会检查当前版本状态,以返回的bool值来跳转流程。

    

    返回true时,进入ProcedurePreload流程,这个流程在Procedure组件内已有定义。预加载流程,OnEnter内对配置表、数据表、字典加载事件进行了监听并设置了回调函数,这几个事件是GameFramework框架内置事件,然后加载了配置表、数据表、字典,在执行完OnEnter的预加载后进入OnUpate,在这里使用枚举器检查了m_LoadedFlag的字典内是否为空,当不为空时,设置了状态机数据VarInt(框架内置数据内型,封装的int),这个数据将在下一个流程内使用,分别为下个场景ID和场景配置数据"Scene.Menu",使用ChangeState进入ProcedureChangeScene流程。注意:在离开ProcedurePreload流程时会在OnLeave对之前在OnEnter注册的事件进行释放。

    返回false时,进入ProcedureCheckVersion,这个流程在Procedure组件内已有定义,版本检查流程,OnEnter内对网络请求成功、网络请求失败、资源加载完成事件进行了监听并设置了回调函数,在执行RequestVersion时,会获取当前设备信息以及平台信息,使用WWW打包数据后,进行发送,发送的地址在BuiltinDataComponent类内m_BuildInfoTextAsset外部连接数据里,这个Json表是直接在游戏对象BuiltinData上直接引用了对象。在接收到网络回复后,则会调用网络请求成功的回调函数OnWebRequestSuccess,这里对接收的数据进行了核实,并开启了第一个UI(DialogForm),以及游戏资源的加载。资源加载成功会回调OnResourceInitComplete。如果是网络请求失败则回调OnWebRequestFailure。当资源加载完毕后,OnUpdate会判断一下资源是否加载成功,如果成功则会使用ChangeState进入ProcedurePreload流程(同上)。注意:在离开ProcedurePreload流程时会在OnLeave对之前在OnEnter注册的事件进行释放。



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值