VR的100天:第21天,在Unity中通过UI创建游戏

欢迎回到第21天。在过去的几天中,我们致力于为玩家创建一个卫生系统,并解决与之相关的敌人的一些问题。

现在我们可以杀死敌人,而敌人可以杀死我们,现在是时候让它变得更完整了!

今天,要做的第一件事是在玩家的生命值达到0时创建游戏结束状态。

为此,我们将使用Unity的UI系统。

这是我们今天的游戏计划。 我们将要:

  • 创建一个面板来保存我们的内容
  • 添加重试按钮和文字游戏
  • 使用动画使面板在失败时显示
  • 在我们的代码中使用我们新的Game Over UI

让我们开始吧!

我们要做的第一件事是通过UI创建游戏,当玩家的生命值降至0时我们将向玩家展示。

我们必须做的第一件事是为我们现有的UI画布HUD创建一个新的Panel UI元素 我们称面板UI GameOver

然后,作为GameOver游戏对象的子代 ,我们将创建一个新的Text and Button UI元素。

让我们进行一些更改,首先我们要更改GameOver屏幕,我们要做的第一件事就是更改Rect Transform。

  • 使用Shift + Ctrl键Rect Transform设置为屏幕的中心,以使面板居中。
  • 宽: 300
  • 高度: 150

接下来,让我们更改文本 ,这是我们要对文本进行的设置:

  • 字体大小: 28
  • 字体样式:粗体
  • 富文本格式:已选中
  • 文字:游戏结束
  • 颜色: Alpha设置为255

对于“ 按钮”游戏对象,在“ 矩形”变换内:

  • 使用Shift + Ctrl键Rect Transform设置为屏幕的中央底部,以将Button居中
  • 宽: 160
  • 身高: 30
  • 位置Y: 20

然后在ButtonText游戏对象中,我们将更改Text的设置

  • 字体样式:粗体
  • 字体大小: 18
  • 富文本格式:选中

完成后,我们将提供以下内容:

现在,我们有了“游戏结束”窗格,接下来需要做的就是创建动画以使其显示出来。

现在,我们只有一个面板站在屏幕前,如果我们要玩游戏,它就在我们面前。

就像在《生存射击》教程中一样,让我们​​为面板创建一个动画,以显示游戏结束时的情况。

为此,我们将使用Unity的动画功能为Game Over游戏对象创建新的动画。

如果“动画”选项卡不可用,请转到“ Windows” >“ 动画 ”以显示窗口。

从面板中选择GameOver游戏对象,然后在“ 动画”选项卡中,单击“ 创建”:

并会要求您创建一个新的.anim文件。

将其移动到我们的Animation文件夹(或要存储的任何位置),并将其命名为Game Over.anim。

这将自动创建GameOver动画剪辑和我们用来附加到游戏对象的GameOver控制器。 实际上,Unity已经将控制器自动附加到我们的游戏对象上。

现在我们已经选择了动画,接下来我们需要确定动画的外观。

这是我的想象:

我们的面板将是不可见的,然后缓慢出现(从alpha 0到1),这种情况发生时,它将开始从屏幕顶部下降到中心(例如,从Y位置100到0)。

一起让它成为现实!

我们需要做的第一件事是向我们的GameOver游戏对象添加一个Group Canvas组件。

我们之所以需要这样做,是因为我们需要能够使动画中的所有内容(父级和子级)透明。 仅通过更改父级的Alpha值,就只会更改其透明度,而不会更改其子级的透明度。

幸运的是Unity想到了这一点,这就是为什么Group Canvas提供alpha属性的众多原因。

现在我们有了所需的所有设置,让我们开始创建动画。

在选择了GameOver游戏对象的“ 动画”选项卡中,我们将单击“ 添加属性”并添加2个属性:

  1. 画布组> Alpha-设置我们的Alpha
  2. 矩形变换>锚定位置-设置我们的Y位置

现在我们拥有了所需的所有属性,我们将在不同帧处更改动画制作器中的值,Unity将从头到尾填充这些值。

默认情况下,对于我们所有的属性,动画开始时在第0帧处都有一个关键点 (灰色菱形),在第60帧处有另一个关键点。每个关键点我们都可以设置一个值,Unity会自动显示从一个键到下一个键的值。

重要的是,我们将白线移至要更改其值的特定键。 更改仅适用于我们的白线所在的位置。

对于“画布组”,在关键帧处:

  1. 0,将alpha设置为0
  2. 60,我们可以将值保留为1

对于Rect Transform,在关键帧处:

  1. 0,将“ 锚定位置.y”设置为100
  2. 60,我们可以将值保留为0

完成后,我们应该有以下内容:

在今天结束之前,我们需要完成2点修饰。

首先是我们不应该在场景中显示我们的Game Over游戏对象。

要解决此问题,我们返回游戏面板中的“ 画布组”组件,然后将Alpha设置为0。

接下来,如果要播放我们的场景,我们的动画将不断重复播放。 我们可以通过在Animation文件夹中选择GameOver.anim并取消选择Loop Time来解决此问题

这将是我们的短期解决方案,明天,我们将为动画实现状态控制器,以便我们可以真正控制动画的方式。

今天就这样! 明天,我们将继续播放动画并将其附加到玩家的生命值低于0且重新启动游戏等其他操作结束时。

在那之前,祝您有个美好的夜晚!

资料来源:第21天

访问Unity VR开发的100天主页。

访问我们的主页