Что делать если происходит такая ошибка?
Я программирую на unity 2D и у меня такая ошибка:
NullReferenceException: Object reference not set to an instance of an object
UI.OnTriggerStay2D (UnityEngine.Collider2D other) (at Assets/Object/Code/UI.cs:21)
Вот код:
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using TMPro; public class UI : MonoBehaviour { public trigger_test zacaz1; public trigger_test1 zacaz2; public TextMeshProUGUI text; public TextMeshProUGUI tet2; void Start() { zacaz1 = GetComponent<trigger_test>(); zacaz2 = GetComponent<trigger_test1>(); } private void OnTriggerStay2D(Collider2D other) { text.text = other.name; if (other.name == zacaz1.right_cargo.name) { tet2.text = "Trade zone №1"; } else { tet2.text = "There is no order"; } if (other.name == zacaz2.right_cargo.name) { tet2.text = "Trade zone №2"; } else { tet2.text = "There is no order"; } } private void OnTriggerExit2D(Collider2D other) { text.text = "There is nothing here"; } } |
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using TMPro; public class UI : MonoBehaviour { public trigger_test zacaz1; public trigger_test1 zacaz2; public TextMeshProUGUI text; public TextMeshProUGUI tet2; void Start() { zacaz1 = GetComponent<trigger_test>(); zacaz2 = GetComponent<trigger_test1>(); } private void OnTriggerStay2D(Collider2D other) { text.text = other.name; if (other.name == zacaz1.right_cargo.name) { tet2.text = "Trade zone №1"; } else { tet2.text = "There is no order"; } if (other.name == zacaz2.right_cargo.name) { tet2.text = "Trade zone №2"; } else { tet2.text = "There is no order"; } } private void OnTriggerExit2D(Collider2D other) { text.text = "There is nothing here"; } }
Дополнительно:
Пожалуйста, зачем вы полезли игры делать, если вы C# не знаете? Что такое NULL?
У вас ошибка NullReferenceException, значит что объект NULL. Почему? Вы получаете объект zacaz1 используя GetComponent<trigger_test>. Что делает GetComponent<trigger_test>? Возвращает присоединённый компонент указанного объекта (текущего). Если при обращении к zacaz1 вы получаете NULL, о чём это говорит? О том, что у этого компонента нет объекта trigger_test
Эта ошибка означает, что в поле хранится null, т.е. оно не инициализировано.
Посмотри на поля text и tet2 - ты в методе Start их не инициализируешь, поэтому они остаются null
- Они public - так что могут все таки извне инициализироваться, в том числе и из эдитора.
- GavriKos, мне кажется в данном случае проблема глубже, чем обработке NRE. как минимум что такое public)
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Если у вас возникла ошибка при работе с кодом на языке программирования PHP, вам следует следовать нескольким шагам для ее решения:
1. Проверьте синтаксис вашего кода. Часто ошибки возникают из-за неправильного написания или расположения символов. Убедитесь, что все скобки, кавычки и точки с запятой расставлены правильно.
// Пример исправленного синтаксиса// Пример исправленного синтаксиса
2. Проверьте переменные. Убедитесь, что все переменные объявлены до их использования, и что они содержат правильные значения.
// Пример исправленного использования переменной $name = "John"; echo "Hello $name"; ?>
3. Проверьте права доступа к файлам и директориям. Убедитесь, что у вас есть достаточные права для чтения и записи файлов, с которыми вы работаете.
4. Используйте отладчик. Инструменты отладки, такие как Xdebug, могут помочь вам найти и исправить ошибки в вашем коде.
5. Посмотрите сообщения об ошибках. PHP обычно выводит сообщения об ошибках, которые могут помочь вам определить причину проблемы. Убедитесь, что у вас включено отображение всех ошибок в настройках PHP.
Следуя этим шагам, вы сможете быстро найти и исправить ошибку в вашем коде на PHP. Если проблема остается, попробуйте задать вопрос на специализированных форумах или сообществах программистов, чтобы получить дополнительную помощь.