今年开始接触这个框架,最开始技术选型的时候是准备使用这个框架进行弱联网小游戏的开发,做一些休闲小游戏的开发。由于一些原因项目在demo阶段告一段落,算起来使用这个框架一共是4个月左右的时间。不知道下一个项目还会不会采用这个框架,利用缓冲时间来整理一下技术以及自己在项目中的收获。
一.框架介绍:
Game Framework 是一个基于 Unity 引擎的游戏框架,主要对游戏开发过程中常用模块进行了封装,很大程度地规范开发过程、加快开发速度并保证产品质量。
GameFramework的官方网站:https://gameframework.cn/
GameFramework的开源地址: https://github.com/EllanJiang/GameFramework/
具体的接入使用细节在官方网站都可以进行查阅,这里说一些常见的注意点:
1.在E神的github可以看到这个框架是分了一下层的,Framework是可以脱离unity单独使用的,在unity中的使用需要结合UnityGameFramework,Runtime中的代码是与Mono紧密结合的。在UnityGameFramework中prefabs文件夹中可以找到一个GameFramework的预制体,这个预制体可以看成一个基础组件,放在初始场景中贯穿整个游戏。
2.GF通过组件控制各个模块,GameEntry是整个游戏的入口,负责初始化框架的基础组件。
private static void InitBuiltinComponents()
{
Base = UnityGameFramework.Runtime.GameEntry.GetComponent<BaseComponent>();
Config = UnityGameFramework.Runtime.GameEntry.GetComponent<ConfigComponent>();
DataNode = UnityGameFramework.Runtime.GameEntry.GetComponent<DataNodeComponent>();
DataTable = UnityGameFramework.Runtime.GameEntry.GetComponent<DataTableComponent>();
Debugger = UnityGameFramework.Runtime.GameEntry.GetComponent<DebuggerComponent>();
Download = UnityGameFramework.Runtime.GameEntry.GetComponent<DownloadComponent>();
Entity = UnityGameFramework.Runtime.GameEntry.GetComponent<EntityComponent>();
Event = UnityGameFramework.Runtime.GameEntry.GetComponent<EventComponent>();
Fsm = UnityGameFramework.Runtime.GameEntry.GetComponent<FsmComponent>();
Localization = UnityGameFramework.Runtime.GameEntry.GetComponent<LocalizationComponent>();
Network = UnityGameFramework.Runtime.GameEntry.GetComponent<NetworkComponent>();
ObjectPool = UnityGameFramework.Runtime.GameEntry.GetComponent<ObjectPoolComponent>();
Procedure = UnityGameFramework.Runtime.GameEntry.GetComponent<ProcedureComponent>();
Resource = UnityGameFramework.Runtime.GameEntry.GetComponent<ResourceComponent>();