【Unity】超级坦克大战(二)游戏流程

更新日期:2020年7月9日。
项目源码:在终章发布

本章最佳实践

正式开始

本章我们将建立超级坦克大战游戏的多个流程,以流程来驱使游戏的进程将是最合适的选择。

超级坦克大战游戏的生命周期由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()
    {
        
    }
}

关卡选择流程

在关卡选择流程,用户可以查看游戏的所有关卡,选择已经解锁的关卡即可进入游戏。

按如下步骤创建关卡选择流程类:

扫描二维码关注公众号,回复: 11430524 查看本文章
  • 在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。
在这里插入图片描述

接下来我们将完善各个流程的逻辑。

猜你喜欢

转载自blog.csdn.net/qq992817263/article/details/106817783
今日推荐