Arzie100 发表于 2022-8-18 13:01

GameFramework的入门

简介

Unity作为引擎他提供了很强大的机制让我们去实现很多自由的功能。但是,真的使用起来还是有很多细节的东西需要我们自己去实现和完善。因此,GameFramework诞生了。从我个人自己的理解,GF更像是个相对完善的单例工具集,还远远没有到框架的地步。包括我参考的Demo都是第三方实现,并且在上面做了扩展。但,我们依旧可以使用他,让我们一些常规的通过功能的实现边的简单。
首先把参考的代码和文档的链接贴上来。
花桑:GameFramework解析:开篇
整体设计

整体的架构设计把Mono部分和非Mono部分拆成了2个库。甚至在Github上都是2个仓库。猜测这个设计可能想做得更灵活。把不同的部分功能完全隔离。但其实实际使用的时候。完全无法独立使用。缺了谁都不可以。

[*]Mono部分:UnityGameFramework
[*]非Mono部分: GameFramework
另外一部分原因可能是想控制所有逻辑的运行顺序,因为大家都知道在Mono部分多个GO很难控制运行的先后顺序。通过把所有组件的运行合并到一个GO里那所有的运行顺序其实就可以人工第一或者修改了。



参考菜桑

功能详解

场景控制/跳转控制

多个场景之间如何跳转,流程可能设计到一些条件和规则。也可能因为策划的想法改变导致一些规则和条件产生变化。因此,如何组织场景跳转就成了开发效率一个需要优化的点。而GF给了一个基于FSM的解决方案-Procedure。
基于Procedure就可以实现基于自己的一套启动逻辑,或者你可以想到的主体控制逻辑。



花桑的启动逻辑

资源的加载和管理

整个框架中代码量最大的一块东西。很多别的组件都是依赖于这个组件的。比如DataTable, Config. .... 绝大部分组件你都能看到资源管理器的注册代码。因此,也可以理解成框架的核心。提供了基础的异步远程资源管理能力。便于我们进行版本管理和资源索引。
DataTable &Config &DataNode

基于资源管理器的数据组织形式,本质目的还是更方便的访问磁盘或者资源数据。其实很有可能会需要基于自己的数据结构尽心优化,比如,Demo编写者就自己写了,Data和Item 这2个扩展去实现数据和资源的加载。其实这边可能需要再思考下如何更好的抽象数据读写这块的内容。
页: [1]
查看完整版本: GameFramework的入门