子类到父类的对象引用未设置为对象C#的实例

时间:2019-01-20 01:40:44

标签: c# unity3d

我对C#中的继承非常陌生,我的问题是对象引用未设置为从父对象到子对象的对象实例

我尝试了从字符串到父项再到子项的调试日志,并且由于我现在正在尝试进行调试,因此可以正常工作

这是我的父母课

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 :(得分:0)

从最初的问题尚不清楚,在哪里引发了异常,但是在派生的(子)类中重复firstButtonClicked行之后再调用in中的方法看起来确实很奇怪。基础(父)类。

例如,当您遵循代码路径时,ImagesClick会递增两次(在派生类中一次,然后在父类中一次,buttonClicked()和我的猜测也会发生相同的情况(因为我不知道具体实现)是因为buttonClicked()被两次调用了,按钮才处于无效状态。

继承的优点之一是您无需重复通用代码。您的派生类firstButtonClicked方法可能仅适用于:

public override void firstButtonClicked()
{   
    finalAnswer += "f";
    TryInheritance =finalAnswer;
    base.firstButtonClicked();
}