NullReference ошибка Unity

Доброго времени суток.

Движок выдает ошибку NullReferenceExpection в

public class AppPAUSE : MonoBehaviour
{
    [SerializeField]
    private GameObject PauseMenu;
    private PauseMenu ShowPause;

    private void Start()
    {
        ShowPause = PauseMenu.GetComponent<PauseMenu>();

    }


    void OnApplicationFocus(bool hasFocus)
    {
        if (!FishDeath.IsDeath)
        {
            Debug.LogFormat("hasFocus: {0}", hasFocus);
            ShowPause.Pause();
        }
    }

    void OnApplicationPause(bool pauseStatus)
    {
        if (!FishDeath.IsDeath)
        {
            Debug.LogFormat("pauseStatus: {0}", pauseStatus);
        }
    }


}

На строчку ShowPause.Pause();

Почитал и понял,что это из-за того,что ShowPause равна нулю ,либо не инициализируется после.Попытался сделать так

(if ShowPause == null)
ShowPause = new PauseMenu();

После этого стал ругаться на такую же ошибку,но уже в другом скрипте

public class PauseMenu : MonoBehaviour
{
    public GameObject pauseMenuUI;
    public static bool GameIsPaused = false;

    public void Resume()
    {
        pauseMenuUI.SetActive(false);
        Time.timeScale = 1f;
        GameIsPaused = false;
    }

    public void Pause()
    {

        pauseMenuUI.SetActive(true);
        Time.timeScale = 0f;
        GameIsPaused = true;
    }

    public void Raload()
    {
        Time.timeScale = 1f;
        SceneManager.LoadScene(1);
        SpawnEnemy.isSpawnerOn = true;

        ScoreScript.scoreValue = 0;
        FishDeath.IsDeath = false;
        ScoreScript.scoreIncreasing = true;
    }

    public void LoadMenu()
    {        
        SceneManager.LoadScene(0);        
    }    
}

на строчку pauseMenuUI.SetActive(true);

Как можно исправить ситуацию?Оно все работает как надо,но хотелось бы без ошибок

P.S.Когда я инициализировал

(if ShowPause == null)
    ShowPause = new PauseMenu();

1)Я не понял вообще зачем это делать,разве я выше не задаю,что мой ShowPause = скрипту? 2)Он начал писать,что new не применим в MonoBehavior и нужно использовать AddComponent();

P.S.S.Сейчас у меня ставится в игре пауза,при потере фокуса на экране,а вот эта функция никак себя не проявляет

void OnApplicationPause(bool pauseStatus)
    {
        if (!FishDeath.IsDeath)
        {
            Debug.LogFormat("pauseStatus: {0}", pauseStatus);
        }
    }

Я что-то делаю не так или же нужно собрать приложение и там уже проверять?По идее она отвечает за то,что открыто у тебя окно или нет,ведь так?

P.S.S.S.Игра под android ,поэтому нужна пауза как при сворачивании приложения,так и при блокировке экрана

Заранее спасибо за ответы и не кидайтесь сильно тапками,я только первый курс:)


Ответы (1 шт):

Автор решения: CyberNoble

Собственно все оказалось просто,у меня висел этот скрипт на новом ГО ,перевесил на ГО,на котором висит скрипт pausemnu и все заработало.Если кратко,то надо,чтобы 2 скрипта висела на 1 объекте

→ Ссылка