Unity и C #: доступ к публичной переменной внутри одного класса внутри метода - PullRequest
0 голосов
/ 13 ноября 2018

Это полная ошибка (в этом новом сценарии это исключение NullReferenceException):

NullReferenceException: Object reference not set to an instance of an object
FightScript.startFight_Click () (at Assets/Scripts/FightScript.cs:105)
UnityEngine.Events.InvokableCall.Invoke () (at C:/buildslave/unity/build/Runtime/Export/UnityEvent.cs:166)
UnityEngine.Events.UnityEvent.Invoke () (at C:/buildslave/unity/build/Runtime/Export/UnityEvent_0.cs:58)
UnityEngine.UI.Button.Press () (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/Button.cs:36)
UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/Button.cs:45)
UnityEngine.EventSystems.ExecuteEvents.Execute (IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/EventSystem/ExecuteEvents.cs:50)
UnityEngine.EventSystems.ExecuteEvents.Execute[IPointerClickHandler] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.EventFunction`1 functor) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/EventSystem/ExecuteEvents.cs:261)
UnityEngine.EventSystems.EventSystem:Update()

Вот код:

public void startFight_Click()                // line 100
{   
    ...
    Debug.Log(strengthHeroValue.ToString());  // line 105 here
    ...
}

forceHeroValue объявлен на уровне классакак общедоступный, как это:

public Text strengthHeroValue;

В пользовательском интерфейсе forceHeroValue назначается ValueText в разделе FightScript (Script).

У меня есть кнопка с именем startButton и в On Click (), я выбрал FightController, а затем событие FightScript.startFight_Click ().

Когда я дважды щелкаю по ошибке, это приводит меня к методу startFight_Click (), который является строкой 100.

Спасибоза вашу помощь.

1 Ответ

0 голосов
/ 13 ноября 2018

Я не могу доказать это, но это единственное разумное объяснение, которое я могу придумать, учитывая подсказки в ваших комментариях. Итак, вот так:

NullReferenceException не выброшено, потому что вы пытаетесь получить доступ к name внутри starFight_Click. Он генерируется, пока ваше событие onClick пытается вызвать starFight_Click. Событие onClick не имеет допустимой ссылки на ваш экземпляр скрипта, но пытается вызвать startFight_Click для null, что вызывает NullReferenceException. Проверьте ваш обработчик событий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...