个性化阅读
专注于IT技术分析

HUD用法示例

游戏需要的最后一块是UI:一个界面, 用于显示诸如得分, “游戏结束”消息和重新启动按钮之类的内容。创建一个新场景并添加一个名为HUD的CanvasLayer节点。它代表”平视显示”, 即一种信息显示, 显示为游戏视图顶部的覆盖图。

CanvasLayer节点使我们可以在游戏其余部分上方的一层上绘制UI元素, 以便其显示的信息不会被任何游戏元素(如玩家或小怪)所掩盖。

HUD显示以下信息:

  • 分数由ScoreTimer更改。
  • 一条消息, 例如” Game Over”或” Get Ready!”。
  • 一个”开始”按钮开始游戏。

Control中UI元素的主要节点。要创建我们的UI, 我们将使用控制节点的类型:标签和按钮。

创建以下内容作为HUD节点的子代:

  • 标签名为ScoreLabel。
  • 标签名为MessageLabel。
  • 名为StartButton的按钮
  • 计时器名为MessageTimer。

注意锚点和边距:它控制节点的位置和大小, 但它们也具有锚点和边距。

锚定义原点:节点边缘的参考点。当我们移动或调整控制节点的大小时, 边距会自动更新。它们表示从控制节点的边缘到其锚点的距离。有关更多详细信息, 请参见设计与控制节点的接口。

排列节点, 如下所示。单击”锚点”按钮以设置控制节点的锚点:

HUD

我们可以拖动节点以手动放置它们, 或者使用以下设置进行更精确的放置:

分数标签

  • 布局:”中上”
  • 文字:0
  • 余量:
    • 左:-25
    • 最高:0
    • 右:25
    • 下装:100

消息标签

  • 布局:”居中”
  • 文字:躲开小兵!
  • 余量:
    • 左:-200
    • 最高:-150
    • 右:200
    • 下:0:0

开始按钮

  • 布局:”中央底部”
  • 文字:开始
  • 余量:
    • 左:-100
    • 最高:200
    • 右:100
    • 下装:100

控制节点的默认字体很小, 缩放效果不佳。游戏资源中包含一个名为” Xolonium-Regular.ttf”的字体文件。要使用字体, 请对三个”控制”节点中的每一个执行以下操作:

1.在”自定义字体”下, 选择”新动态字体”。

HUD

2.单击我们添加的” DynamicFont”, 然后在” FontData”下选择” Load”, 然后选择” Xolonium-Regular.ttf”文件。我们还必须设置字体大小。设置为64效果很好。

HUD

现在将此脚本添加到HUD:

GDScript

func update_score(score):
    $ScoreLabel.text = str(score)

每当乐谱变化时, 在Main中都会调用此函数。

连接MessageTimer的timeout()信号和StartButton的pressed()信号。

GDScript

func update_score(score):
    $ScoreLabel.text = str(score)
func _on_StartButton_pressed():
    $StartButton.hide()
    emit_signal("start_game")

func _on_MessageTimer_timeout():
    $MessageLabel.hide()

将HUD连接到Main

现在我们已经完成了创建HUD场景的操作, 将其保存并返回到Main。像在Player中那样在Main中实例化HUD场景, 并将其放置在树的底部。完整的树应该看起来像这样, 因此请确保我们没有错过任何内容:

HUD

现在, 我们需要将HUD功能连接到我们的主脚本。这需要为主场景添加一些内容。

在”节点”选项卡中, 将HUD的start_game信号连接到new_game函数。

在new_game()中, 更新得分显示并显示” Get Ready”消息:

GDScript

$HUD.update_score(score)
$HUD.show_message("Get Ready")

在game_over()中, 我们需要调用相应的HUD函数:

GDScript

$HUD.show_game_over()

最后, 将其添加到_on_scoreTimer_timeout()中, 以使显示与变化的分数保持同步:

GDScript

$HUD.update_score(score)

现在我们可以开始比赛了!单击”播放项目””按钮。我们将被要求选择主要场景, 因此选择Main.tscn。

整理起来

现在, 我们已经完成了游戏的所有功能。

以下是一些剩余的步骤, 可以添加更多”果汁”以改善游戏体验。随时根据我们的想法扩展游戏玩法。

背景

默认的灰色背景不是很吸引人, 因此让我们更改其颜色。一种方法是使用ColorRect节点。将其设为Main下的第一个节点, 以便将其绘制在其他节点之后。 ColorRect仅具有一个属性:颜色。选择一个colorRect, 使其覆盖屏幕。

如果我们有一个背景图片, 也可以使用Sprite节点添加背景图片。

声音特效

声音和音乐可能是增加游戏体验吸引力的最有效方法。在我们的游戏资源文件夹中, 我们有两个声音文件:” House in a Forest Loop.ogg”用于背景音乐, 而” gameover.wav”用于玩家迷路。

添加两个AudioStreamPlayer节点作为Main的子级。命名音乐之一, 另一个命名为DeathSound。在每个流媒体上, 单击Stream属性, 选择”加载”, 然后选择相应的音频文件。

要播放音乐, 请在new_game()函数中添加$ Music.play(), 并在game_over()函数中添加$ Music.stop()。

最后, 在game_over()函数中添加$ DeathSound.play()。

粒子

为了获得视觉上的最后吸引力, 让我们为玩家的动作添加尾迹效果。选择我们的Player场景并添加一个名为Trail的Particles2D节点。

配置粒子时, 有很多属性可供选择。随时尝试并创造不同的效果。为了有效, 在此示例中, 使用以下设置:

HUD

我们还需要通过单击<null>然后单击”新建粒子材质”来创建材质。其设置如下:

HUD

为了使”色带”设置渐变, 我们需要一个将精灵的alpha(透明度)从0.5(半透明)更改为0.0(完全透明)的坡度。

单击”新建渐变纹理”, 然后在”渐变”下, 单击”新建渐变”。我们将看到一个这样的窗口:

HUD

左右框分别代表开始和结束颜色。单击每个, 然后单击右侧的大方块以选择颜色。对于第一种颜色, 将A(alpha)值设置为一半左右。对于第二个, 将其设置为0。

有关更多详细信息或使用粒子效果, 请参见Particles2D。


赞(0)
未经允许不得转载:srcmini » HUD用法示例

评论 抢沙发

评论前必须登录!