一、游戏总入口 GameEntry
1.内建好的GameEntry.Builtin
提供了各种框架的组件封装
2.自定义GameEntry.Custom
根据提供的案例参考即可实现自己的组件
3.游戏入口GameEntry
二、实现自己的组件并注册到管理类中
我们自己的组件只需要继承UnityGameFramework.Runtime.GameFrameworkComponent
在基类中的Awake方法中就自动将该自定义组件往管理类中进行了注册,底层逻辑使用链表存储组件。
三、启动流程以及各个流程之间的结构关系
流程的初始化启动在ProcedureComponent中的Start方法中延迟一帧后启动编辑器中设置好的默认启动流程。
1.流程基类ProcedureBase
该基类中有属性UseNativeDialog 是否开启原生对话窗,在案例中并未实现原生对话窗的接入
在UIExtension中可以看到当打开对话窗时会根据当前流程的UseNativeDialog布尔值来判断使用何种对话窗
2.流程启动类ProcedureLaunch
在该流程中
(1)构建信息将json文本对象序列化为BuildInfo类对象
(2)语言配置设置游戏的语言(根据编辑器下设置的,根据历史设置过的,根据不支持的设置为英文,若都不是则默认使用LocalizationComponent在Start中初始化的系统语言)
(3)变体配置设置加载的资源变体(这里主要是对各种版本语言的不同加载)
(4)声音配置(根据历史或者默认设置声音静音或对应音量)
(5)默认字典(对还没有更新的情况下的多语言即没有进入游戏中需要修改语言的情况使用)
(6)运行一帧切换ProcedureSplash流程
3.Splash动画类ProcedureSplash
设置Logo,注意事项等动画随后根据选择的游戏的模式进行对应的切换流程
4.资源检测加载流程
整体游戏前的准备流程如下:
5.资源预加载类ProcedurePreload
(1)默认配置加载
(2)数据表的加载
(3)默认的各国语言的加载(这里会根据之前的变体类型加载对应的AssetBundle)
(4)字体的加载
资源都加载好后进入菜单场景
6.场景切换类ProcedureChangeScene
(1)订阅场景加载的各种事件
(2)停止所有声音
(3)隐藏所有实体
(4)卸载场景
(5)还原游戏速度
(6)根据传递的数据加载对应的场景
(7)切换流程