推荐阅读
- CSDN主页
- GitHub开源地址
- Unity3D插件分享
- 简书地址
大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。
一、前言
【GameFramework框架】系列教程目录:
https://blog.csdn.net/q764424567/article/details/135831551
这篇文章就带领大家如何快速启动GameFramework框架。
二、正文
2-1、导入框架
2-1-1、下载方式
-
官网unitypackage包
在官网下载unitypackage然后导入到项目中。
https://gameframework.cn/download/
-
拉取Gitee项目库
下载Zip或者使用git进行拉取都可以。
https://gitee.com/jiangyin/GameFramework
-
拉取Github项目库
东西是一样的,不过一个在Gitee一个在Github
https://github.com/EllanJiang/GameFramework
比较推荐使用git拉取的方式,防止出现莫名其妙的错误。
不熟悉 git 的用户,可以考虑尝试 GitHub Desktop(由 GitHub 官方提供的工具):
Clone即可。
2-1-2、导入
包导入:
2-2、运行框架
双击打开Example目录下的Example.scene场景:
GameFramework.prefab 预制体,用于快速创建一个游戏框架启动场景:
运行项目后发现Game场景有个浮动小窗口,这是框架提供的调试器窗口:
- Console 选项卡在运行时(当然可以在移动设备上)默认按不同日志类型,以不同的日志颜色回显最近的日志。点击某条日志可以查看详细的日志和堆栈详请
- Information 选项卡显示设备硬件信息、游戏版本和资源信息,输入信息,传感器等
- Profiler 选项卡显示性能调试相关的信息,内存,对象池,网络等信息
- Other 选项卡可以用来配置调试框窗口的大小缩放(一般不用修改)、执行内存回收操作或者执行重启游戏操作等
当然,每个选项卡,下面还有很多选项,这里不再赘述。
到这里,框架已经算是启动完成 ,但是很多功能点还没有演示。
接下里用一个使用 Game Framework 游戏框架制作的游戏演示项目,来对框架的使用方法做一些说明。
2-3、Star Force演示项目
(1)拉取版本库:
https://github.com/EllanJiang/StarForce
有小伙伴可能会遇到从Github下载StarForce示例工程编译报错的问题。
根据作者的反馈可能是StarForce在引入游戏框架的时候使用了Submodule:
直接下载了 GitHub 上提供的 zip 包不包含submodule,进而导致报错。
考虑尝试 GitHub Desktop(由 GitHub 官方提供的工具),此工具在下载工程时,会自动下载 submodule。
(2)运行示例场景
这是一个类似太空射击的游戏,是基于GameFramework框架进行开发。
我们直接打开位于Assets目录下的StarForce Launcher.scene场景,双击打开运行,推荐使用768*1024分辨率:
示例虽小,麻雀俱全,这个示例工程演示了资源热更新的基本流程和操作步骤,以及如何加载实体、加载UI等。
对象池、数据表、调试器、下载器、事件、FSM都有涉及。
下面就来具体看一下如何加载的吧。
(3)加载分析
加载GF模块
这个场景中的核心是Buliltin预制体,里面包含了GF所有模块:
Game Framework身上挂载了Game Entry脚本组件作为主入口:
使用了partial
修饰符,标记一个类是分部类,将框架组件加载和自定义组件放到分部类里面进行:
两个分部类:
基本流程
GF框架的流程贯穿游戏的始终(包括很多框架都是流程贯穿始终),要了解这个框架也要先从流程开始分析。
首先找到流程模块Procedure
,挂载了Procedure脚本组件
,ProcedureLauch
为游戏入口流程:
双击打开ProcedureLaunch.cs
脚本,继承自ProcedureBase
,一层层深入,发现它和状态机有着不可分割的关系:
他们的关系用UML图大概表示一下就是这样:
众所周知,基层FSM状态机状态的更新会传递到底层的FSM上,一切状态都被FSM持有和维护。
流程的基层的状态切换也会传递到底层的FSM上。
比如说切换场景:
1、OnEnter
进入流程,订阅了一些事件,监听切换场景的事件
2、OnUpdate
当通知场景加载已经完成,就可以根据需要切换场景。
3、OnLeave
离开流程,也需要取消订阅事件
一般流程都会包含这三个生命周期,也可以根据需求增加其他生命周期函数。
OK,理解了FSM生命周期,下面开始加速了。。。
ProcedureLaunch配置游戏基础信息
订阅更新在这:
进入ProcedureSplash判断版本
编辑器模式直接进入预加载,否则,检查版本并更新:
ProcedureCheckVesion检查版本
订阅添加WebRequest任务请求的成功与失败事件:
ProcedurePreload加载
开始加载运行游戏需要的资源,三个生命周期:
加载完资源,用ProcedureChangeScene
切换场景:
ProcedureMenu
游戏流程,ProcedureMenu
游戏菜单流程。
下面就是StarForce的流程图了:
还是那句话,流程贯穿始终,其他模块也是为流程服务的,比如说Web Request、Download、Object Pool
。
理解了流程,这个框架也算是入门了,接着就是熟悉更多具体的实现模块,完成框架的使用。
三、后记
如果觉得本篇文章有用别忘了点个关注,关注不迷路,持续分享更多Unity干货文章。
你的点赞就是对博主的支持,有问题记得留言:
博主主页有联系方式。
博主还有跟多宝藏文章等待你的发掘哦:
专栏 | 方向 | 简介 |
---|---|---|
Unity3D开发小游戏 | 小游戏开发教程 | 分享一些使用Unity3D引擎开发的小游戏,分享一些制作小游戏的教程。 |
Unity3D从入门到进阶 | 入门 | 从自学Unity中获取灵感,总结从零开始学习Unity的路线,有C#和Unity的知识。 |
Unity3D之UGUI | UGUI | Unity的UI系统UGUI全解析,从UGUI的基础控件开始讲起,然后将UGUI的原理,UGUI的使用全面教学。 |
Unity3D之读取数据 | 文件读取 | 使用Unity3D读取txt文档、json文档、xml文档、csv文档、Excel文档。 |
Unity3D之数据集合 | 数据集合 | 数组集合:数组、List、字典、堆栈、链表等数据集合知识分享。 |
Unity3D之VR/AR(虚拟仿真)开发 | 虚拟仿真 | 总结博主工作常见的虚拟仿真需求进行案例讲解。 |
Unity3D之插件 | 插件 | 主要分享在Unity开发中用到的一些插件使用方法,插件介绍等 |
Unity3D之日常开发 | 日常记录 | 主要是博主日常开发中用到的,用到的方法技巧,开发思路,代码分享等 |
Unity3D之日常BUG | 日常记录 | 记录在使用Unity3D编辑器开发项目过程中,遇到的BUG和坑,让后来人可以有些参考。 |