Дочерний к родительскому классу Object Reference не установлен на экземпляр Object C # - PullRequest
0 голосов
/ 20 января 2019

Я очень плохо знаком с наследованием в C #, и моя проблема в том, что Object Reference не установлен экземпляр объекта от Parent до Child

Я пробовал журнал отладки от строки к родителю и потомку и теперь работает, когда я экспериментирую, это происходит сейчас

Это мой родительский класс

public class GameManagerRevamped : MonoBehaviour
{
    //Arrays Buttons
    public GameObject[] gameButtons;

    //Arrays ImagesSource
    public Image[] ImagesSource;
    //Source Images
    public Sprite[] BlackImages;

    //Instance Variables
    public int ImagesClick =-1;
    public int buttonOrder;
    public string finalAnswer = "";
    public string TryInheritance;

    public virtual void buttonClicked()
    {
        ImagesSource[ImagesClick].sprite = BlackImages[ImagesClick];
        gameButtons[buttonOrder].SetActive(false);
    }

    public virtual void firstButtonClicked()
    {
        ImagesClick += 1;
        buttonOrder = 0;
        buttonClicked();
        finalAnswer += "";
        Debug.Log(TryInheritance);
    }
}

это мой детский класс

public class FableScript : GameManagerRevamped
{

    public override void buttonClicked()
    {
        base.buttonClicked();
    }

    public override void firstButtonClicked()
    {   
        finalAnswer += "f";
        TryInheritance =finalAnswer;
        ImagesClick += 1;
        buttonOrder = 0;
        buttonClicked();
        base.firstButtonClicked();
    }
}

«TryInheritance» работает, но для другого не установлен экземпляр объекта. Дело в том, когда я нажимаю на кнопку, она переходит в неактивное состояние :))

1 Ответ

0 голосов
/ 20 января 2019

Из исходного вопроса не совсем ясно, где генерируется исключение, но выглядит очень странно, что вы повторяете количество строк firstButtonClicked в производном (дочернем) классе, прежде чем вызывать метод в базе (родительский) класс.

Когда вы следуете, например, по пути кода, ImagesClick увеличивается дважды (один раз в производном классе, а затем один раз в родительском классе, то же самое происходит с buttonClicked() и моим предположением (потому что я не знаю, реализация) состоит в том, что кнопка становится неактивной, потому что buttonClicked() вызывается дважды.

Одним из преимуществ наследования является то, что вам не нужно повторять общий код. Ваш производный метод класса firstButtonClicked может работать только с:

public override void firstButtonClicked()
{   
    finalAnswer += "f";
    TryInheritance =finalAnswer;
    base.firstButtonClicked();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...