You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
1.1 KiB
36 lines
1.1 KiB
extends CanvasLayer
|
|
## HUD:分数、生命(图标)、提示。接 Main 的方法直接更新。
|
|
## 命数图标用 ColorRect 排一排,比纯数字直观。
|
|
|
|
const LIFE_ICON_SIZE: Vector2 = Vector2(24, 8)
|
|
const LIFE_ICON_SPACING: float = 4.0
|
|
const LIFE_ICON_COLOR: Color = Color(0.4, 0.6, 1.0)
|
|
|
|
@onready var score_label: Label = $ScoreLabel
|
|
@onready var lives_label: Label = $LivesLabel
|
|
@onready var message_label: Label = $MessageLabel
|
|
@onready var lives_container: HBoxContainer = $LivesContainer
|
|
|
|
func _ready() -> void:
|
|
show_message("按 空格 发球")
|
|
|
|
func update_score(score: int) -> void:
|
|
score_label.text = "Score: %d" % score
|
|
|
|
func update_lives(lives: int) -> void:
|
|
lives_label.text = "Lives: %d" % lives
|
|
_refresh_life_icons(lives)
|
|
|
|
func show_message(text: String) -> void:
|
|
message_label.text = text
|
|
|
|
func _refresh_life_icons(lives: int) -> void:
|
|
# 清空旧图标
|
|
for child in lives_container.get_children():
|
|
child.queue_free()
|
|
# 重新生成 lives 个
|
|
for i in range(lives):
|
|
var icon := ColorRect.new()
|
|
icon.custom_minimum_size = LIFE_ICON_SIZE
|
|
icon.color = LIFE_ICON_COLOR
|
|
lives_container.add_child(icon)
|
|
|