首页 > 其他分享 >【Unity】超级坦克大战(二)游戏流程

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

时间:2022-12-13 14:36:52浏览次数:49  
标签:ProcedureBase 流程 超级 public Unity override void Procedure


更新日期: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()
{

}
}

如下,我们的四个基本流程已经创建完毕:

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

启用所有流程

流程类创建之后,必须要在Main入口场景的框架环境的流程设置面板启用该流程,否则该流程将是无效的。

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

按如下步骤启用一个流程:

  • 选中框架环境下的物体HTFramework/Procedure
  • 在Inspector检视面板点击Add Procedure按钮添加流程,同时激活该流程,同理,在此面板删除流程即禁用该流程。

如下,我们将创建的四个流程都启用:

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

设置默认流程

超级坦克大战的默认流程应该是登录流程,他使得用户进入游戏看到的第一个画面是登录界面。

在上方流程设置面板,Default项后面显示的名称即为默认流程,点击后面的Set Default按钮即可设置某一个激活的流程为默认流程,目前默认流程为ProcedureLogin。

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


此时我们运行Main场景,流程已然开始运作,只是目前我们的四个流程均是摆设,里面没有干任何的实事,所以Game视图是一片空白,只不过我们查看Procedure的检视面板,即可看到运行时数据显示,当前流程正处在默认流程ProcedureLogin。

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

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


标签:ProcedureBase,流程,超级,public,Unity,override,void,Procedure
From: https://blog.51cto.com/u_15911199/5934041

相关文章

  • Unity UGUI图文混排(五) -- 一张图集对应多个Text
    继上一篇说的更新了一张图集对应多个Text的功能,为了节省资源嘛这里,但是也没有舍弃之前的一个Text一个图集,因为我感觉应该两个都有用,于是我重新写了一个脚本1.其实大体跟前面......
  • 【Unity】超级坦克大战(三)登录界面
    更新日期:2020年7月9日。项目源码:在终章发布索引​​本章最佳实践​​​​正式开始​​​​创建UI编辑场景​​​​创建登录界面UI实体​​​​创建登录界面UI逻辑类​​​......
  • 【Unity】超级坦克大战(一)搭建项目、导入框架、前期开发准备
    更新日期:2020年7月9日。项目源码:在终章发布免责声明:超级坦克大战使用的图片、音频等所有素材均有可能来自互联网,本专栏所有文章仅做学习和教程目的,不会将任何素材用于任何......
  • 【Unity】MeshEditor.Effects.Vortex 网格编辑器特效篇之碎化特效
    更新日期:2020年5月13日。Github源码:​​​[点我获取源码]​​索引​​Fragmentization​​​​使用​​​​参数​​​​原理及算法​​​​图像展示​​Fragmentization设......
  • Unity UGUI实现分段式血条
    我们可以看到像英雄联盟等游戏里英雄头顶的血条显示并非是纯色的,而是根据血量的多少而显示一定量的格子,这种方式明显是比较友好、比较美观的,事实上我们的游戏里面也想实现这......
  • Unity Editor 自定义属于你的DefaultHeaderGUI
    DefaultHeaderGUI默认页眉GUI,是Unity编辑器中的所有对象被选中后在Inspector界面显示的页眉GUI,如下图红框区域:在这个区域加点自己的东西。finishedDefaultHeaderGUI只需要......
  • Unity UGUI图文混排(六) -- 超链接
    图文混排更新到超链接这儿,好像也差不多了,不过就在最后一点,博主也表现得相当不专业,直接整合了山中双木林同学提供的超链接的解决方案,博主甚至没来得及细看就直接复制了,但感觉......
  • Unity Hex Map技术测试
    HexMap常用于战棋的地形,最近有这方面的需求,做一个简单的测试,从画一个正六边形开始。0x00.正六边形如上图所示,两个圆,可以很规范的画一个六变形。外圆半径定为:​​publicco......
  • 【Unity】MeshEditor.Effects.Vortex 网格编辑器特效篇之涡流特效:开启你的不会Shader
    更新日期:2020年4月22日。Github源码:​​​[点我获取源码]​​索引​​前言​​​​扩展​​​​Vortex​​​​使用​​​​参数​​​​原理及算法​​​​图像展示​​前......
  • Unity角色残影特效
    残影特效在网上有很多例子,比如​​这个​​,我参考着自己整合了一下,算是整合了一个比较完整且特别简单易用的出来,只需要一个脚本挂上去无需任何设定就能用。这里只针对Skinne......