一,目录
Assets
- GameFramework(游戏框架)
- GameMain(游戏目录)
- Configs(配置)
- DataTables(数据表,自动生成数据类)
- Entity(实体数据)
- Item(项数据)
- Localization(本地化资源)
- Plugins(插件)
- Res(资源)
- Sounds(声音)
- Scenes(场景文件)
- Scripts(脚本代码)
- Base (初始化GF组件和游戏自定义组件)
+ GameEntry (游戏入口)
- BuiltinData (自定义数据组件)
+ BuiltinDataComponent
- Camera(摄像机)
- Data(数据)
- DataTable(数据表)
- Definition(定义的版本数据)
- Editor(编辑器相关生成数据工具)
- Entity(实体)
- Enum(由工具根据配置文件自动生成)
- Event(事件类)
- Extension(扩展)
- FSM(有限状态机)
- Item(塔防里的一项)
- Level(关卡)
- Localization(本地化)
- Menu(菜单)
- PlacementArea(可放区域)
- Procedure(流程)
- Sound(声音)
- Tower(塔)
- UI(UI)
- Utility(工具类)
- UI(UI预制件)
二,自动生成相关
在目录 DataTable 下可以看到挺多 txt格式的文件,这些文件可以用excel打开,然后在上面编辑后保存。
目录 Editor 下的脚本文件,可以生成能够解析对应 txt的的数据类。
在工具栏可以看到有相关按钮
三,游戏初始化
Base 目录下的 GameEntry(挂在Unity编辑上GameFramework节点) 就是游戏的入口,在这会初始化所有的GF组件和游戏自动逸的组件。GameFrameworkComponent 里的 Awake 方法会注册这个组件到GF。
四,游戏流程
在编辑器里Procedure节点,可以看到所有的流程。这里第一个流程是ProcedureLaunch。这个流程主要是初始化版本信息,本地语言等。
处理完后就到了ProcedureSplash这个流程,就是播放logo动画这些。然后根据运行环境来选择下面的流程:
编辑器:ProcedurePreload
单机:ProcedureInitResources 初始化单机游戏相关资源后到ProcedurePreload
更新:ProcedureCheckVersion 检测是否有新的资源,有则下载,完成再到ProcedurePreload
ProcedurePreload
在ProcedurePreload流程,把所有的数据实例化,可以在GameEntry.Data获取。可以看编辑器Data节点上有哪些数据。获取到的后,可以根据数据设置一些开始需要设置的。
ProcedureLoadingScene
接着到ProcedureLoadingScene这个流程,首先会关闭之前场景的弹框等;接着加载下一个场景的相关数据和资源。
这个之后就到ProcedureMenu。
ProcedureMenu
在这个流程会弹Menu UI界面,选择游戏关卡选择界面。点击第一关,就会进入ProcedureLevel
ProcedureLevel
根据关卡数据初始化场景,及实体;注册相关事件等。
五 塔防游戏
数据和实体都准备好了,下面就是让每个实体按自己的规则行为来移动,攻击等。
LevelControl 实例是管理输入,实体的更新等。
塔防主要有二类实体:
1,EntityEnemy(敌人):初始化完数据后,会根据当前状态来更新,使用了状态机;
NavMeshAgent使得敌人有自动寻路的行为。
2,Tower(塔):
Targetter,获取目标的逻辑
Attack,攻击的逻辑
HealthBar,自己的生命
Attack通过每帧更新来判断是否可以发送子弹来实现Tower的行为。
最后通过CommonLauncher里的方法,发送创建实体的事件。
ProcedureLevel接收到这个事件之后就会创建并展示这个实体实例。
EntityProjectileHitscan,只是播放一个动画0.1秒的动画,动画结束后就会对敌人造成伤害
EntityProjectileBallistic,根据添加物理相关,让实体一直指向目标,物理里面会更新位置,达到很不错的效果
EntityMissileArray ,多个导弹一起发射,效果很不错,原理跟上面一致
EntityEnergyPylon,让周围敌人减速
当敌人实例都死亡,也就胜利了,可以进行下一关
当玩家死亡,也就是失败了
六
游戏的大致流程如上面描述那样,至于更具体的需要看代码的具体实现了。从流程入手,一步一步的往底层看。运行游戏看节点的变化。