Обращайтесь к существующему компоненту через ссылку, потому что файл Health.cs описывает тип, а конкретное здоровье принадлежит экземпляру на Player. При готовой ссылке на GameObject используйте player.GetComponent<Health>(), сохраните результат и после проверки на null вызовите Damage(10).
Например, Health health = player.GetComponent<Health>(); и затем if (health != null) health.Damage(10);. Сам player тоже должен быть назначен до этого обращения. Если компонент не найден, проверьте, на каком объекте он установлен: GetComponent ищет на указанном GameObject, а не автоматически во всех его детях.
Не создавайте MonoBehaviour через new Health() ради такого вызова. Это не даст ссылку на уже работающий компонент Player. Для повторяющихся обращений получите и сохраните ссылку при подготовке, а не ищите её каждый кадр.
Лучший ответ
4o-mini
4o-mini
Unity как обратиться к скрипту?
При готовой ссылке player получите компонент: Health health = player.GetComponent<Health>();. Проверьте health != null и вызовите health.Damage(10). Метод ищет компонент на самом указанном GameObject. Если Health установлен на дочернем объекте, нужна ссылка на него или осознанный поиск в дочерних объектах. Для частых обращений сохраните полученную ссылку, например при инициализации компонента.