SetActive выдает ошибку
Все как в похожих на эту тему вопросах, но ответы на них мне не помогли поэтому решил создать тоже.
Есть меню паузы, SetActive(false) который должен выключать его работает корректно, но SetActive(true) уже выдает ошибку:
The variable PauseMenuUI of Menu has not been assigned.
You probably need to assign the PauseMenuUI variable of the Menu script in the inspector.
Хотя PauseMenuUI скрипту присвоен и выключает он отлично.
Если закомментировать этот метод все работает, но сами понимаете без него никуда... Вот мой код:
public static bool gameIsPause = true;
public GameObject PauseMenuUI;
private void Start()
{
Pause();
}
public void StartGame()
{
PauseMenuUI.SetActive(false);
Time.timeScale = 1f;
gameIsPause = false;
}
public void Pause()
{
PauseMenuUI.SetActive(true);
Time.timeScale = 0f;
gameIsPause = true;
}
на MENU висит одноименный скрипт. PauseMenuUI - канвас(ванильный, без доп компонентов) у которого пока что только одна кнопка - Start Game которая использует метод StartGame()
Ответы (1 шт):
Решил проблему следующим методом(как по мне через костыль):
Канвасу(меню паузы) присвоил тег menu
в скрипте объявил новый GameObject и в Start() присвоил ему меню паузы найденное через тег и уже в Pause() использовал переменную в которой записан игровой объект найденный через тег
public GameObject PauseMenuUI; // заданная через оболочку unity
public GameObject menu; // задана по тегу
private void Start()
{
menu = GameObject.FindGameObjectWithTag("menu").gameObject;
}
public void StartGame()
{
PauseMenuUI.SetActive(false);
Time.timeScale = 1f;
gameIsPause = false;
}
public void Pause()
{
//PauseMenuUI.SetActive(true);
menu.SetActive(true);
Time.timeScale = 0f;
gameIsPause = true;
}
