更新日期:2020年7月9日。
项目源码:在终章发布
索引
- 本章最佳实践
- 正式开始
- 登录流程
- 准备流程
- 关卡选择流程
- 闯关流程
- 启用所有流程
- 设置默认流程
本章最佳实践
- Procedure流程。
正式开始
本章我们将建立超级坦克大战游戏的多个流程,以流程来驱使游戏的进程将是最合适的选择。
超级坦克大战游戏的生命周期由Procedure(流程)来控制,他其实等效于一个加强版的有限状态机,目前我们暂时将游戏流程划分为如下几种:登录流程、准备流程、关卡选择流程、闯关流程。
登录流程
首先超级坦克大战当然不需要登录,登录流程我们只是让用户点击一个按钮以便进入游戏。
按如下步骤创建登录流程类:
- 在Project视图点击鼠标右键;
- 选择菜单Create -> HTFramework -> C# Procedure Script;
- 命名为ProcedureLogin,并将存储路径选择为Script/Procedure;
- 点击保存按钮。
/// <summary>
/// 登录流程
/// </summary>
public class ProcedureLogin : ProcedureBase
{
/// <summary>
/// 流程初始化
/// </summary>
public override void OnInit()
{
}
/// <summary>
/// 进入流程
/// </summary>
/// <param name="lastProcedure">上一个离开的流程</param>
public override void OnEnter(ProcedureBase lastProcedure)
{
}
/// <summary>
/// 离开流程
/// </summary>
/// <param name="nextProcedure">下一个进入的流程</param>
public override void OnLeave(ProcedureBase nextProcedure)
{
}
/// <summary>
/// 流程帧刷新
/// </summary>
public override void OnUpdate()
{
}
/// <summary>
/// 流程帧刷新(秒)
/// </summary>
public override void OnUpdateSecond()
{
}
}
准备流程
在准备流程,用户可以做一些战前准备,包括选择自己出战的坦克,查看坦克简介及坦克配置的武器。
按如下步骤创建准备流程类:
- 在Project视图点击鼠标右键;
- 选择菜单Create -> HTFramework -> C# Procedure Script;
- 命名为ProcedureReady,并将存储路径选择为Script/Procedure;
- 点击保存按钮。
/// <summary>
/// 准备流程
/// </summary>
public class ProcedureReady : ProcedureBase
{
/// <summary>
/// 流程初始化
/// </summary>
public override void OnInit()
{
}
/// <summary>
/// 进入流程
/// </summary>
/// <param name="lastProcedure">上一个离开的流程</param>
public override void OnEnter(ProcedureBase lastProcedure)
{
}
/// <summary>
/// 离开流程
/// </summary>
/// <param name="nextProcedure">下一个进入的流程</param>
public override void OnLeave(ProcedureBase nextProcedure)
{
}
/// <summary>
/// 流程帧刷新
/// </summary>
public override void OnUpdate()
{
}
/// <summary>
/// 流程帧刷新(秒)
/// </summary>
public override void OnUpdateSecond()
{
}
}
关卡选择流程
在关卡选择流程,用户可以查看游戏的所有关卡,选择已经解锁的关卡即可进入游戏。
按如下步骤创建关卡选择流程类:
- 在Project视图点击鼠标右键;
- 选择菜单Create -> HTFramework -> C# Procedure Script;
- 命名为ProcedureChooseLevel,并将存储路径选择为Script/Procedure;
- 点击保存按钮。
/// <summary>
/// 关卡选择流程
/// </summary>
public class ProcedureChooseLevel : ProcedureBase
{
/// <summary>
/// 流程初始化
/// </summary>
public override void OnInit()
{
}
/// <summary>
/// 进入流程
/// </summary>
/// <param name="lastProcedure">上一个离开的流程</param>
public override void OnEnter(ProcedureBase lastProcedure)
{
}
/// <summary>
/// 离开流程
/// </summary>
/// <param name="nextProcedure">下一个进入的流程</param>
public override void OnLeave(ProcedureBase nextProcedure)
{
}
/// <summary>
/// 流程帧刷新
/// </summary>
public override void OnUpdate()
{
}
/// <summary>
/// 流程帧刷新(秒)
/// </summary>
public override void OnUpdateSecond()
{
}
}
闯关流程
进入游戏后,即是进入闯关流程。
按如下步骤创建闯关流程类:
- 在Project视图点击鼠标右键;
- 选择菜单Create -> HTFramework -> C# Procedure Script;
- 命名为ProcedureGame,并将存储路径选择为Script/Procedure;
- 点击保存按钮。
/// <summary>
/// 闯关流程
/// </summary>
public class ProcedureGame : ProcedureBase
{
/// <summary>
/// 流程初始化
/// </summary>
public override void OnInit()
{
}
/// <summary>
/// 进入流程
/// </summary>
/// <param name="lastProcedure">上一个离开的流程</param>
public override void OnEnter(ProcedureBase lastProcedure)
{
}
/// <summary>
/// 离开流程
/// </summary>
/// <param name="nextProcedure">下一个进入的流程</param>
public override void OnLeave(ProcedureBase nextProcedure)
{
}
/// <summary>
/// 流程帧刷新
/// </summary>
public override void OnUpdate()
{
}
/// <summary>
/// 流程帧刷新(秒)
/// </summary>
public override void OnUpdateSecond()
{
}
}
如下,我们的四个基本流程已经创建完毕:
启用所有流程
流程类创建之后,必须要在Main入口场景的框架环境的流程设置面板启用该流程,否则该流程将是无效的。
按如下步骤启用一个流程:
- 选中框架环境下的物体HTFramework/Procedure;
- 在Inspector检视面板点击Add Procedure按钮添加流程,同时激活该流程,同理,在此面板删除流程即禁用该流程。
如下,我们将创建的四个流程都启用:
设置默认流程
超级坦克大战的默认流程应该是登录流程,他使得用户进入游戏看到的第一个画面是登录界面。
在上方流程设置面板,Default项后面显示的名称即为默认流程,点击后面的Set Default按钮即可设置某一个激活的流程为默认流程,目前默认流程为ProcedureLogin。
此时我们运行Main场景,流程已然开始运作,只是目前我们的四个流程均是摆设,里面没有干任何的实事,所以Game视图是一片空白,只不过我们查看Procedure的检视面板,即可看到运行时数据显示,当前流程正处在默认流程ProcedureLogin。
接下来我们将完善各个流程的逻辑。