Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Разработка игры на движке Unity

Madbek / Ученик (45), на голосовании 2 месяца назад
Разработка игры на Unity.
здравствуйте, вот у меня есть два кода один для там счетчика дефолтной ачивки и тд, а второй для того чтобы была сцена меню и нажимая кнопку она перевадила на сцену с игрой, я присваиваю эту функцию кнопке, но она ен реагирует и выходит ошибка NullReferenceException: Object reference not set to an instance of an object
Score_and_Achiv.Update () (at Assets/Scripts/Main Menu.cs:15)
код для перехода на сцену
using UnityEngine;
using UnityEngine.SceneManagement;

public class SceneLoader : MonoBehaviour

{
public void LoadGameScene()
{
SceneManager.LoadScene(1);
}
}
остальной код для фонов в другой сцене
using UnityEngine.SceneManagement;
using UnityEngine.UI;
using UnityEngine;

public class Score_and_Achiv : MonoBehaviour
{
private int _Score = 0;
[SerializeField] Text ScoreText;
[SerializeField] GameObject PanelAchiv;
[SerializeField] GameObject Achivement;
[SerializeField] GameObject DefoltAchivement;

public void Update()
{
ScoreText.text = _Score.ToString();
if (_Score == 10)
{
Achivement.SetActive(true);
DefoltAchivement.SetActive(false);
}
}


public void IsClicScore()
{
_Score++;
}

public void MenuAchivClick()
{
PanelAchiv.SetActive(true);
}

public void MenuAchivClicVihod()
{
PanelAchiv.SetActive(false);
}
}
подскажите пожалуйста, как исправить.Если что, все элементы заполнены
Голосование за лучший ответ
бабуин гибонович Просветленный (40644) 3 месяца назад
Ошибка `NullReferenceException: Object reference not set to an instance of an object` обычно возникает, когда вы пытаетесь обратиться к объекту, который не был инициализирован.

В вашем случае, ошибка происходит на строке 15 в файле `Main Menu.cs`. Это значит, что в этой строке происходит попытка обратиться к объекту, который не был правильно инициализирован. Вероятно, проблема связана с объектом `ScoreText`, который должен быть инициализирован, но не был.

Убедитесь, что вы правильно присвоили объект `ScoreText` в редакторе Unity, перетащив текстовый объект в соответствующее поле `Score_and_Achiv` скрипта.

Если вы уверены, что присвоили `ScoreText` правильно, то возможно, проблема в том, что этот код выполняется до того, как объект `ScoreText` был инициализирован. Проверьте, что скрипт `Score_and_Achiv` находится на активном объекте в вашей сцене, и что этот объект существует в момент выполнения кода.

Также, убедитесь, что скрипт `Score_and_Achiv` активен в момент выполнения. Если его отключить, он не будет исполняться, что может привести к такой ошибке.
Bloody Slave Гуру (2905) 3 месяца назад
Ошибка NullReferenceException: Object reference not set to an instance of an object обычно означает, что вы пытаетесь обратиться к объекту, который еще не был инициализирован. В вашем случае, ошибка происходит в методе Update() класса Score_and_Achiv при попытке обновить текстовое поле ScoreText.

Возможные причины этой ошибки могут быть следующие:

Объект ScoreText не был инициализирован в редакторе Unity. Убедитесь, что вы связали объект ScoreText с соответствующим текстовым полем в редакторе Unity.
Объект ScoreText был удален или выключен во время выполнения игры. Убедитесь, что объект ScoreText доступен и включен во время выполнения игры.
Если вы уверены, что все элементы заполнены и связаны правильно, попробуйте добавить проверку на null перед обращением к ScoreText в методе Update(), чтобы избежать этой ошибки. Вот как это можно сделать:
 public void Update() 
{
if (ScoreText != null)
{
ScoreText.text = _Score.ToString();
if (_Score == 10)
{
Achivement.SetActive(true);
DefoltAchivement.SetActive(false);
}
}
else
{
Debug.LogError("ScoreText is not set!");
}
}
Madbek /Ученик (45) 3 месяца назад
а что дальше, теперь у меня выходит ошибка ScoreText is not set!
Похожие вопросы