Текст урона/лечения в Unity не появляется в режиме Game, но есть в Scene. Почему?
Здравствуйте, столкнулся с проблемой в Unity (2D-платформер, игра под мобильные).
Хочу реализовать отображение всплывающего текста урона и лечения (типа “-1”, “+1”, “Full” и т.д.) с помощью TextMeshPro. Префаб уже есть, и при ударе Instantiate срабатывает — в Scene объект появляется, но в Game его не видно.
Что уже сделано:
• Canvas для текста отдельный (UI > Canvas), стоит Render Mode: Screen Space - Overlay.
• Префаб текста — TextMeshPro - Text внутри пустого объекта.
• Спавн текста через Camera.main.WorldToScreenPoint(textSpawnPoint.position).
• Префаб действительно создается, это видно в инспекторе.
• Пробовал менять Sorting Layer, Canvas Order и т.п.
• Позиция у создаваемого текста запредельная (например, по X: 6000), хотя персонаж находится на X = -2.
• Сцена показывает, что текст есть, но в режиме Game — он отсутствует визуально.
Вопросы:
1. Почему текст не отображается в Game, хотя появляется в сцене?
2. Как корректно “привязать” префаб текста к позиции игрока на экране (например, над HPBar)?
3. Может быть, стоит использовать другой подход?
Если надо, скину код и скрины. Уже всё перепробовал — помогите!
Ну так если у вас новый canvas там трансформ а вы преобразуете (Camera.main.WorldToScreenPoint(textSpawnPoint.position)) в RectTransform вот и получаете позицию x и y в пикселях
Попробуйте создать объект на сцене(без Instantiate) и просто сменяйте его трансформ по позиции в Game, после уже работаете с Instantiate