В вашем скрипте, судя по описанию, текст с показателем здоровья пропадает после того, как все мобы уничтожены. Это может происходить по нескольким причинам, и для решения проблемы нужно рассмотреть несколько вариантов:
### 1. **Проблема с объектом игрока**
Если после уничтожения всех мобов исчезает и сам объект игрока (`player`), то логика обновления здоровья больше не может происходить, так как ссылка на объект игрока пропадает. Необходимо убедиться, что объект игрока продолжает существовать даже после окончания боя.
### 2. **Проверка на наличие игрока**
Вы можете добавить проверку на существование объекта игрока, чтобы предотвратить ошибки, если объект будет удалён. Для этого перед обновлением текста можно проверить, существует ли ссылка на игрока.
Попробуйте модифицировать ваш скрипт следующим образом:
extends Label
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(_delta: float) -> void:
var player = $"../../../player" # Получаем игрока
if player: # Проверяем, существует ли игрок
text = "HP: " + str(player.health) # Обновляем текст с хп
else:
text = "HP: N/A" # Если игрока нет, например, после его удаления
### 3. **Проверка логики уничтожения мобов**
Вам нужно убедиться, что уничтожение мобов не затрагивает объект игрока или его данные о здоровье. Если после уничтожения всех мобов происходит, например, смена сцены, и игрок перестаёт существовать в дереве сцен, это также может объяснять, почему текст пропадает.
### 4. **Обработка конца боя**
Если у вас есть логика, связанная с концом боя (например, удаление объектов или смена интерфейса), проверьте, чтобы она не влияло на отображение здоровья. Например, можно после уничтожения всех мобов не удалять интерфейс или текстовое поле HP, а просто остановить его обновление.
### 5. **Дебаг и логирование**
Для лучшего понимания проблемы можете добавить вывод в консоль состояния игрока и его здоровья:
extends Label
func _process(_delta: float) -> void:
var player = $"../../../player"
if player:
text = "HP: " + str(player.health)
print("Player HP:", player.health) # Лог здоровья игрока
else:
text = "HP: N/A"
print("Player not found") # Лог отсутствия игрока
Этот код поможет вам понять, на каком этапе пропадает объект игрока или его здоровье, и что происходит с отображением текста.
Попробуйте эти советы и протестируйте игру ещё раз.
код текста "HP"ниже
extends Label
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
pass # Replace with function body.
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(_delta: float) -> void:
text = "HP: " + str($"../../../player".health)