到了现在,我感觉到对引擎的熟悉程度差不多了,也能自己做点小项目,可是着手写大点的项目的时候,经常会有无从下手的感觉,设计模式也看了,别人源码也能看懂,可是就是写不出人家那种水平的代码,于是我决定学习一个游戏框架,熟悉他的流程,思想,并且应用到项目中。

我写这个专栏的动机如下:

  • 学完整理成博客,让自己理解更深刻。

  • 互联网教会了我很多,我要尽自己的一份薄力回报。

  • 希望帮助到学习这个框架的人。

GameFramework是Ellan大神的开源框架,下面是官网简介:

Game Framework 是一个基于 Unity 5.3+ 引擎的游戏框架,主要对游戏开发过程中常用模块进行了封装,很大程度地规范开发过程、加快开发速度并保证产品质量。

在最新的 Game Framework 版本中,包含以下 17 个内置模块,后续还将开发更多的扩展模块供开发者使用。

  1. 数据结点 (Data Node) – 将任意类型的数据以树状结构的形式进行保存,用于管理游戏运行时的各种数据。
  2. 数据表 (Data Table) – 可以将游戏数据以表格(如 Microsoft Excel)的形式进行配置后,使用此模块使用这些数据表。数据表的格式是可以自定义的。
  3. 调试器 (Debugger) – 当游戏在 Unity 编辑器中运行或者以 Development 方式发布运行时,将出现调试器窗口,便于查看运行时日志、调试信息等。用户还可以方便地将自己的功能注册到调试器窗口上并使用。
  4. 下载 (Download) – 提供下载文件的功能,支持断点续传,并可指定允许几个下载器进行同时下载。更新资源时会主动调用此模块。
  5. 实体 (Entity) – 我们将游戏场景中,动态创建的一切物体定义为实体。此模块提供管理实体和实体组的功能,如显示隐藏实体、挂接实体(如挂接武器、坐骑,或者抓起另一个实体)等。实体使用结束后可以不立刻销毁,从而等待下一次重新使用。
  6. 事件 (Event) – 游戏逻辑监听、抛出事件的机制。Game Framework 中的很多模块在完成操作后都会抛出内置事件,监听这些事件将大大解除游戏逻辑之间的耦合。用户也可以定义自己的游戏逻辑事件。
  7. 有限状态机 (FSM) – 提供创建、使用和销毁有限状态机的功能,一些适用于有限状态机机制的游戏逻辑,使用此模块将是一个不错的选择。
  8. 本地化 (Localization) – 提供本地化功能,也就是我们平时所说的多语言。Game Framework 在本地化方面,不但支持文本的本地化,还支持任意资源的本地化,比如游戏中释放烟花特效也可以做出几个多国语言的版本,使得中文版里是“新年好”字样的特效,而英文版里是“Happy New Year”字样的特效。
  9. 网络 (Network) – 提供使用 Socket 长连接的功能,当前我们支持 TCP 协议,同时兼容 IPv4 和 IPv6 两个版本。用户可以同时建立多个连接与多个服务器同时进行通信,比如除了连接常规的游戏服务器,还可以连接语音聊天服务器。如果想接入 ProtoBuf 之类的协议库,只要派生自 Packet 类并实现自己的消息包类即可使用。
  10. 对象池 (Object Pool) – 提供对象缓存池的功能,避免频繁地创建和销毁各种游戏对象,提高游戏性能。除了 Game Framework 自身使用了对象池,用户还可以很方便地创建和管理自己的对象池。
  11. 流程 (Procedure) – 是贯穿游戏运行时整个生命周期的有限状态机。通过流程,将不同的游戏状态进行解耦将是一个非常好的习惯。对于网络游戏,你可能需要如检查资源流程、更新资源流程、检查服务器列表流程、选择服务器流程、登录服务器流程、创建角色流程等流程,而对于单机游戏,你可能需要在游戏选择菜单流程和游戏实际玩法流程之间做切换。如果想增加流程,只要派生自 ProcedureBase 类并实现自己的流程类即可使用。
  12. 资源 (Resource) – 为了保证玩家的体验,我们不推荐再使用同步的方式加载资源,由于 Game Framework 自身使用了一套完整的异步加载资源体系,因此只提供了异步加载资源的接口。不论简单的数据表、本地化字典,还是复杂的实体、场景、界面,我们都将使用异步加载。同时,Game Framework 提供了默认的内存管理策略(当然,你也可以定义自己的内存管理策略)。多数情况下,在使用 GameObject 的过程中,你甚至可以不需要自行进行 Instantiate 或者是 Destroy 操作。
  13. 场景 (Scene) – 提供场景管理的功能,可以同时加载多个场景,也可以随时卸载任何一个场景,从而很容易地实现场景的分部加载。
  14. 配置 (Setting) – 以键值对的形式存储玩家数据,对 UnityEngine.PlayerPrefs 进行封装。
  15. 声音 (Sound) – 提供管理声音和声音组的功能,用户可以自定义一个声音的音量、是2D声音还是3D声音,甚至是直接绑定到某个实体上跟随实体移动。
  16. 界面 (UI) – 提供管理界面和界面组的功能,如显示隐藏界面、激活界面、改变界面层级等。不论是 Unity 内置的 uGUI 还是其它类型的 UI 插件(如 NGUI),只要派生自 UIFormLogic 类并实现自己的界面类即可使用。界面使用结束后可以不立刻销毁,从而等待下一次重新使用。
  17. Web 请求 (Web Request) – 提供使用短连接的功能,可以用 Get 或者 Post 方法向服务器发送请求并获取响应数据,可指定允许几个 Web 请求器进行同时请求。

我觉得最重要的是理解第11个,流程的含义,因为它贯穿整个游戏,游戏的开始,更新,结束它都在参与。

Ellan大神的GitHub:https://github.com/EllanJiang

GF官网:http://gameframework.cn/summary

GF官方交流群:216332935(带佬超级多)

已经有大佬开始为这个框架写教程了,可是让我这样的小白看,有时还是有点吃力,所以我就以小白的的身份写教程。(这里的小白指的不是Unity小白,是游戏框架方面的小白,如果对Unity不够熟悉,就先去写点小项目吧,不然学习这个框架很吃力,事倍功半。)

笨木头的GF教程:http://www.benmutou.com/archives/2473

自然妙有猫仙人的GF教程:https://blog.csdn.net/qq_32821435/article/details/80469748

有人说,框架只会限制自己,成不了气候,我觉得是他用框架的方法不对,我们不能只循规蹈矩,而是要参透它的思想,并在其基础上进行最适合自己项目的改动。也可能是我没到那个境界~

这个专栏的更新可能会很慢,因为学这个框架确实不容易,我要确保把某一部分看懂了,才发教程,不然误人子弟就不好了~当然,欢迎大家指出我文章的不足,共同把它变得更好,让更多人知道这个强大的框架。

GameFramework篇:前言相关推荐

  1. VUE源码学习第一篇--前言

    一.目的 前端技术的发展,现在以vue,react,angular为代表的MVVM模式以成为主流,这三个框架大有三分天下之势.react和angular有facebook与谷歌背书,而vue是以一己之 ...

  2. GameFramework篇:StarForce全解读(总目录)

    说实话,我刚开始看这个官方案例的时候,其实心里是没底的,因为模块和封装着实有点夸张(别误会,是我层次低的原因,并不是说这样不好).好了,说这些是想告诉大家,不要慌,我一个菜鸡都能挺过来你们也可以,并且 ...

  3. 东华大学2020考研计算机复试准备上机题解析答案_基础篇 前言

    东华2020考研复试准备上机题解析答案_基础篇 前言 大家好,我是今年参加东华大学研究生入学考试的学生,前不久东华大学发布了关于复试上机的通知,还有题库供大家练习.我于是刷完了所有的题目,并且把题目和 ...

  4. GameFramework篇:StarForce全解读(前言)

    从这篇文章开始,我就和大家一起,以一个初学者的角度开始学习GF这个框架. 本来我是想以一层层剖析代码的形式来和大家一起学习,想了想又觉得不妥,授人以鱼不如授人以渔,应当更多的说学习的方法. 所以我决定 ...

  5. Mysql高级调优篇——前言简介

    本篇开始就进入Mysql高级篇,当然我讲解的身份是Java开发工程师,并非专业的DBA,所以我们以写出高效,好用,Sql优化和开发相关的数据库方面的知识落地为目的,帮助开发解决一些sql上的问题,为迈 ...

  6. GameFramework篇:Network模块案例解读(一:准备工作)

    前言 过了那么久,我又回来了,因为我开始研习服务端了(欠的技术债总要还的),因为GF已经越来越熟练,并且使用过程中也十分稳定,所以我已经决定了,使用GF做客户端,至于服务端,因为对于中大型项目,服务端 ...

  7. 深入理解Lustre文件系统-第1篇 前言

    Lustre文件系统是由U.S.Department of Energy Office of Science and National Nuclear SecurityAdministration l ...

  8. GameFramework篇:使用源码替换GameFramework.dll

    为了方便我们研究Demo和学习框架,我们要把GameFramework.dll替换成源码.在此之前,请确保GF和UGF皆为最新版本. 环境: 若当前使用的 Unity 2017.3(不含)以前的版本 ...

  9. GameFramework篇:StarForce资源热更新讲解(二:具体操作步骤)

    上篇我们讲解了基本的实现流程,那么本篇我们来谈谈实际操作,从零开始一步步配置 先来捋一遍思路 首先,Full目录下的资源是Unity打出来的AssetBundle经过加密(如果选择了Load from ...

最新文章

  1. 技术“摸鱼” 大神,国外小哥 5 年白拿 45 万工资!
  2. 前端模块化,AMD与CMD的区别
  3. 缩进对于python程序至关重要吗_缩进对于Python程序至关重要。
  4. 刷题练习记录(3)——无重复字符的最长子串(JAVA 和 Python)——set()函数/集合...
  5. springMVC 几种页面跳转方式
  6. .net EF框架 MySql实现实例
  7. VTK:模型之MarchingCubes
  8. 考虑页面置换算法,系统有m个物理块供调度,初始时全空,页面引用串长度为p,包含了n个不同的页号,无论用什么算法,缺页次数不会少于( )
  9. 导出oracle sequences,利用数据泵只导出序列
  10. iphone全部机型_【每日一技】iPhone重启手机和关机后开机有什么区别
  11. 网站压力测试工具webbench 安装与使用
  12. soidworks 生成PCD点云文件
  13. Shiro学习总结(1)——Apache Shiro简介
  14. 2008总有一种恐惧让你泪流满面
  15. 一个常量,C#编译通过,打开Form报错
  16. 慧荣SM2258XT、SM2259XT量产工具开启“忽略区分等级”功能
  17. 语音转文字怎么转?分享这些实用软件
  18. OpenTracing语义标准
  19. 关于微信小程序分享及分享朋友圈、复制链接
  20. 像“毒液”一样的粘液机器人火了,能取出体内异物,穿过1.5mm细缝无压力!...

热门文章

  1. 解读采用DSP工业电机控制系统电路_电动机控制电路图讲解
  2. Microsoft的CL编译器与GCC到底有什么区别?
  3. 华为无线设备配置同一业务VLAN的AP间快速漫游
  4. 解决Warning: Leaking Caffe2 thread-pool after fork
  5. 实验六 移位寄存器及其应用
  6. 树莓派与声音传感器 python
  7. CEVA-Xx_V17.1.0_64b安装步骤
  8. 腾讯云服务器地域与可用区
  9. 51nod 1718 Cos的多项式 【数学】
  10. Beta阶段事后诸葛亮分析