Неккоректно работает кнопка рестарта игры

Cделал кнопку перезагрузки в игре, но после неё могу только в меню выйти NullReferenceException: Object reference not set to an instance of an object и по новой начать игру, что с этим делать?

Вот скрипт кнопки рестарт

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class Restart : MonoBehaviour
{
public void OnClick()
{
    SceneManager.LoadScene("GameScreen");
}
}

вот часть основы,которая ругается

    GameObject persistantObj = GameObject.FindGameObjectWithTag("PersistantObj") as GameObject;
    gameMode = persistantObj.GetComponent<PersistanceScript>().gameMode;
    Destroy(persistantObj);

и сам persistant

public string gameMode;

private void Awake()
{
    DontDestroyOnLoad(this);
}

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

Автор решения: Anton Nikolaev

Оператор as работает таким образом, что если к типу справа от него привести объект не удается, то он записывает в переменную значение null. Отсюда и NullReferenceException

Соответственно при первой загрузке сцены у объект не удаляется благодаря

private void Awake()
{
    DontDestroyOnLoad(this);
}

Но при попытке перезагрузить вы его удаляете с помощью Destroy и не создаете заново при загрузке этой же сцены в последующие разы.

GameObject persistantObj = GameObject.FindGameObjectWithTag("PersistantObj") as GameObject;
    gameMode = persistantObj.GetComponent<PersistanceScript>().gameMode;
    Destroy(persistantObj);

Решений несколько:

  1. Не удалять объект при перезагрузке, а просто обновлять его состояние на то, которое должно быть на момент старта уровня.
  2. Удалять объект и пересоздавать его вновь из префаба.
→ Ссылка