Не удается получить скрипт кнопки из gameobject в unity

#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.")
}