Не работает SetActive(), окно не появляется
Реализовывал несложную паузу в игре. Есть окно и кнопка, при нажатии на кнопку паузы должно появляться окно паузы
Скрипт приложу ниже, он находится на пустом объекте, который в свою очередь прикреплен к кнопке паузы.
Часть кода работает точно - пауза срабатывает, только вот окно не появляется. Ошибок консоль не выдает, просто не поваляется окно. Оно реализовано в Canvas картинкой
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Pause : MonoBehaviour
{
public GameObject PauseScreen;
public GameObject player;
public void PauseOn()
{
Time.timeScale = 0f;
gameObject.GetComponent<PlayerMove>().enabled = false;
PauseScreen.SetActive(true);
}
public void PauseOff()
{
Time.timeScale = 1f;
gameObject.GetComponent<PlayerMove>().enabled = true;
PauseScreen.SetActive(false);
}
}
Ответы (2 шт):
Почему бы вам просто не включать и выключать объект через Inspector, а вообще советую подучить основы Unity
Если PausScreen
это объект с Canvas
, то меню и не появится.
Лучше всего создать пустой объект, добавить к нему компонент Canvas
и уже внутри это объекта плодить нужные сущности, по типу Image
, который отвечает за бэкграунд Меню и в неё уже дочерними сущностями добавлять кнопки и прочее что нужно.
К тому же вы у объекта Pause
просите компонент PlayerMove
.
Если вы хотите получить компонент PlayerMove
у объекта player
:
PlayerMove playerMove = player.GetComponent<PlayerMove>
Если вам нужен именно компонент PlayerMove
, то лучше сразу опракинуть ссылку на него:
public class Pause : MonoBehaviour
{
public GameObject PauseScreen;
public PlayerMove player;
public void PauseOn()
{
Time.timeScale = 0f;
player.enabled = false;
PauseScreen.SetActive(true);
}
public void PauseOff()
{
Time.timeScale = 1f;
player.enabled = true;
PauseScreen.SetActive(false);
}
}