Неккоректно работает кнопка рестарта игры
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);
Решений несколько: