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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_15020543/article/details/85267533

说实话,我刚开始看这个官方案例的时候,其实心里是没底的,因为模块和封装着实有点夸张(别误会,是我层次低的原因,并不是说这样不好)。好了,说这些是想告诉大家,不要慌,我一个菜鸡都能挺过来你们也可以,并且,在看项目的过程中,你对C#这门语言的掌握应该会更上一层楼,因为用到了相对高级的语法(对我来说泛型约束都是高级的~)。这篇博客是总目录,分模块讲解StarForce案例,因为本身StarForce就是分模块比较明确,所以这种形式的解读并不算太困难,每个标题后面的链接即为对此模块功能应用的讲解。最后,如果大家又对GF的心得希望可以分享出来,大家共同进步,中国游戏的明天靠我们了!

我还写了GF的其他教程,在我博客分类选择GameFramework就可以看到了

好了,不说题外话了,我们正式开始。

进入GameFramework场景,这个场景是作为StarForce的入口场景,其核心是

这个预制体包含了GF所有模块

点开Builtin,里面这些都是功能模块,一一对应了官网文档说明http://gameframework.cn/summary

1.资源 

  1. 打包须知
  2. StarForce资源加载细节讲解(一:资源加载辅助器)
  3. StarForce资源加载细节讲解(二:ResourceComponent详解)
  4. StarForce资源加载细节讲解(三:获取使用资源与总结)
  5. GameFramework篇:StarForce资源热更新讲解(一:基本流程)
  6. GameFramework篇:StarForce资源热更新讲解(二:具体操作步骤)
  • 资源 (Resource) – 为了保证玩家的体验,我们不推荐再使用同步的方式加载资源,由于 Game Framework 自身使用了一套完整的异步加载资源体系,因此只提供了异步加载资源的接口。不论简单的数据表、本地化字典,还是复杂的实体、场景、界面,我们都将使用异步加载。同时,Game Framework 提供了默认的内存管理策略(当然,你也可以定义自己的内存管理策略)。多数情况下,在使用 GameObject 的过程中,你甚至可以不需要自行进行 Instantiate 或者是 Destroy 操作。

2.流程 

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

我们先不看别的,先看它是怎么进入游戏的

  • 个人理解:最底下那个Entrance Procedure(入口流程),即为游戏开始的脚本。其余勾选的即为游戏里用得到的流程。其实流程没什么神秘的,他就像个状态机,游戏里的任一时刻只有一个状态,比如你打开背包,就离开当前的大厅,进入背包流程,当你点击返回大厅按钮,就离开背包流程,进入大厅流程。切换场景也是如此。

3.实体

  1. GameFramework篇:StarForce显示实体(Entity)
  • 实体 (Entity) – 我们将游戏场景中,动态创建的一切物体定义为实体。此模块提供管理实体和实体组的功能,如显示隐藏实体、挂接实体(如挂接武器、坐骑,或者抓起另一个实体)等。实体使用结束后可以不立刻销毁,从而等待下一次重新使用。

  • 个人理解:看完了流程,我们就要看游戏物体了,在GF里,所有的游戏物体都被当做实体,并且,采用实体(Entity)与实体逻辑属性(EntityLogic)分离的做法,举个例子,实体就是一个大脑空白的人,他不会动,没有呼吸,没有心跳,没有思想,我们想让他“活过来”,就要赋予他逻辑思维,给他名字。同样的,在GF里,实体逻辑是创造实体的时候动态添加的。你看这个飞机,他只有一个模型和一点贴图,一个碰撞器而已,把他放到游戏里,它不会动,不会发出声音,就是个死物。

    看代码里的Entity部分,符合我们的论述。

4.UI

  1. GameFramework篇:StarForce加载UI讲解(上)
  2. GameFramework篇:StarForce加载UI讲解(下)
  • 界面 (UI) – 提供管理界面和界面组的功能,如显示隐藏界面、激活界面、改变界面层级等。不论是 Unity 内置的 uGUI 还是其它类型的 UI 插件(如 NGUI),只要派生自 UIFormLogic 类并实现自己的界面类即可使用。界面使用结束后可以不立刻销毁,从而等待下一次重新使用。

  • 个人理解:游戏流程有了,游戏物体也有了,为了让玩家和游戏更好的交互,我们还需要看UI。在GF里,所有的UI界面,都要放到Instance下面。当然了,人物的血条,蓝条这种就需要自己斟酌放哪了,案例的做法是新建了自定义组件,将血条与UI分离开来。

5.对象池//TODO

  • 对象池 (Object Pool) – 提供对象缓存池的功能,避免频繁地创建和销毁各种游戏对象,提高游戏性能。除了 Game Framework 自身使用了对象池,用户还可以很方便地创建和管理自己的对象池。

  • 个人理解:这也算是一个老生常谈的话题了,GF框架已经内置了这个功能,在创造实体的时候都是看对象池有没有,没有的话就新建一个,有的话就直接拿来用了,节省了不少性能。

6.配置//TODO

  • 全局配置 (Config) – 存储一些全局的只读的游戏配置,如玩家初始速度、游戏初始音量等。

  • 个人理解:不同于游戏中多变的数据,Config适用的情况是几乎不怎么变化的数据配置,版本号,游戏音量等,

7.数据结点//TODO

  • 数据结点 (Data Node) – 将任意类型的数据以树状结构的形式进行保存,用于管理游戏运行时的各种数据。

  • 个人理解:这个就是适用于游戏运行时的数据模块啦,比如玩家的血量,蓝量,经验值等。

8.数据表

  1. GameFramework篇:StarForce数据表创建与读取
  • 数据表 (Data Table) – 可以将游戏数据以表格(如 Microsoft Excel)的形式进行配置后,使用此模块使用这些数据表。数据表的格式是可以自定义的。

  • 个人理解:这个用于初始化实体的数据,初始生命值,攻击力,防御力等。往往在初始化资源的时候使用。

9.调试器

  1. GameFramework篇:Debugger相关
  • 调试器 (Debugger) – 当游戏在 Unity 编辑器中运行或者以 Development 方式发布运行时,将出现调试器窗口,便于查看运行时日志、调试信息等。用户还可以方便地将自己的功能注册到调试器窗口上并使用。

  • 个人理解:Debugger,不必多说。

10.下载器

  1. GameFramework篇:StarForce资源热更新讲解(一:基本流程)
  2. GameFramework篇:StarForce资源热更新讲解(二:具体操作步骤)
  • 下载 (Download) – 提供下载文件的功能,支持断点续传,并可指定允许几个下载器进行同时下载。更新资源时会主动调用此模块。

  • 个人理解:Ellan封装好的下载模块,也可根据自己需求更改

11.事件//TODO

  1. GameFramework篇:自定义事件订阅
  • 事件 (Event) – 游戏逻辑监听、抛出事件的机制。Game Framework 中的很多模块在完成操作后都会抛出内置事件,监听这些事件将大大解除游戏逻辑之间的耦合。用户也可以定义自己的游戏逻辑事件。

  • 个人理解:这个模块真的很重要,类与类通信十分方便,比如,订阅UI打开成功事件,当打开成功的时候就切换流程。再比如,订阅玩家重生事件,当玩家重生时清空屏幕上的怪。。。

12.有限状态机

  1. GameFramework篇:StarForce流程讲解
  • 有限状态机 (FSM) – 提供创建、使用和销毁有限状态机的功能,一些适用于有限状态机机制的游戏逻辑,使用此模块将是一个不错的选择。

  • 个人理解:这个模块也很厉害,框架里的流程模块就是基于有限状态机实现的。至于其应用便更加广泛,玩家从静止到移动,从平A到技能,从正常到突然去世,拳皇这种格斗游戏的搓招系统。。。总之状态的改变,都可以用。

13.本地化//TODO

  • 本地化 (Localization) – 提供本地化功能,也就是我们平时所说的多语言。Game Framework 在本地化方面,不但支持文本的本地化,还支持任意资源的本地化,比如游戏中释放烟花特效也可以做出几个多国语言的版本,使得中文版里是“新年好”字样的特效,而英文版里是“Happy New Year”字样的特效。

  • 个人理解:呃。。。也叫变体吧,多语言用得到。

14.网络//TODO

  • 网络 (Network) – 提供使用 Socket 长连接的功能,当前我们支持 TCP 协议,同时兼容 IPv4 和 IPv6 两个版本。用户可以同时建立多个连接与多个服务器同时进行通信,比如除了连接常规的游戏服务器,还可以连接语音聊天服务器。如果想接入 ProtoBuf 之类的协议库,只要派生自 Packet 类并实现自己的消息包类即可使用。

  • 个人理解://TODO

15.场景//TODO

  • 场景 (Scene) – 提供场景管理的功能,可以同时加载多个场景,也可以随时卸载任何一个场景,从而很容易地实现场景的分部加载。

  • 个人理解:封装了UnityScene,实现了更多的功能,与其余模块配合起来,舒服的很。

16.游戏配置

  1. GameFramework篇:存档功能简单使用
  • 游戏配置 (Setting) – 以键值对的形式存储玩家数据,对 UnityEngine.PlayerPrefs 进行封装。

  • 个人理解:存读档功能

17.Web请求

  1. GameFramework篇:StarForce资源热更新讲解(一:基本流程)
  • Web 请求 (Web Request) – 提供使用短连接的功能,可以用 Get 或者 Post 方法向服务器发送请求并获取响应数据,可指定允许几个 Web 请求器进行同时请求。

  • 个人理解://TODO

18.声音//TODO

  • 声音 (Sound) – 提供管理声音和声音组的功能,用户可以自定义一个声音的音量、是 2D 声音还是 3D 声音,甚至是直接绑定到某个实体上跟随实体移动。

  • 个人理解:声音管理模块,集中管理游戏所有音效,很方便。

19.引用池//TODO

猜你喜欢

转载自blog.csdn.net/qq_15020543/article/details/85267533
今日推荐