#user-interface #button #unity3d #gameobject
#пользовательский интерфейс #кнопка #unity-игровой движок #gameobject
Вопрос:
У меня есть какая-то кнопка в моей игре, и я хочу, чтобы, когда ведущий игрок ответит и выберет одну кнопку, скрипт кнопки этого игрового объекта button изменил свой цвет.
Но я получаю какую-то ошибку, подобную этой :
Исключение NullReferenceException: ссылка на объект не установлена на экземпляр объекта
Это мой код :
Button playerOneAnswerBtn = GameObject.FindWithTag (playerOneAnswer).GetComponent<Button> ();
ColorBlock cbPlayerOneAnswer = playerOneAnswerBtn.colors;
cbPlayerOneAnswer.normalColor = Color.blue;
cbPlayerOneAnswer.highlightedColor = Color.blue;
playerOneAnswerBtn.colors = cbPlayerOneAnswer;
Комментарии:
1.
Debug.Log()
результатFindWithTag()
иGetComponent<Button>()
. Выясните, где находится нулевая ссылка, и отлаживайте оттуда.
Ответ №1:
Я предполагаю, что вы новичок в программировании, вам следует помнить о значении исключения NullReferenceException Исключение NullReferenceException возникает при попытке использовать метод или свойство ссылочного типа (C #, Visual Basic), значение которого равно null. (подробнее) Итак, в вашем случае отсутствует объект / null, и вы пытаетесь получить к нему доступ. Скорее всего, эта строка
Button playerOneAnswerBtn = GameObject.FindWithTag (playerOneAnswer).GetComponent<Button> ();
Вы можете обеспечить это с помощью
if(GameObject.FindWithTag (playerOneAnswer)! = null){
//your code
}
else{
Debug.LogError(playerOneAnswer " tag object did not found.")
}