Скрипт кнопки Restart работает некорректно. Unity
Есть button, на котором висит пустой объект, а на объекте скрипт, по сути этот скрипт должен включать отображение button при уничтожении игрока, но он этого не делает, предполагаю что некорректно реализовал условие if
[SerializeField] private GameObject _player;
private void Start()
{
transform.parent.gameObject.SetActive(false);
}
private void Update()
{
if(GameObject.FindGameObjectsWithTag("Player") == null)
{
transform.parent.gameObject.SetActive(true);
}
}
public void OnClick()
{
SceneManager.LoadScene(0);
}
Ответы (2 шт):
GameObject.FindGameObjectsWithTag(); возвращает массив. Если ничего не найдено, то он возвращает массив с длиной 0. Вообще длина этого массива будет показывать количество объектов с этим тэгом на сцене.
Попробуй так:
[SerializeField] private GameObject _player;
private void Start()
{
transform.parent.gameObject.SetActive(false);
}
private void Update()
{
if(GameObject.FindGameObjectsWithTag("Player").Length == 0)
{
transform.parent.gameObject.SetActive(true);
}
}
public void OnClick()
{
SceneManager.LoadScene(0);
}
Итак, напишу вариант решения для таких же гениев как и я, у которых возникла подобная проблема
суть проблемы была в том, что при отключении объекта button, отключался и сам скрипт, то есть все переставало работать, я решил эту проблему подобными строками:
[SerializeField] private GameObject _restarter;//сюда нужно поместить кнопку рестарта, или что там у вас
public void Destroyer()
{
Player.transform.Translate(0, -10, 0);
_restarter.SetActive(true);
} // весь этот скрипт был один целым, из-за этого если я уничтожал объект, то все равно ничего не работало, поэтому если player достигал 0 хп, то он перемещался куда то, также по дефолту я выключал кнопку, ну и уже в этом методе включал