首页 > 解决方案 > 子类到父类对象引用未设置为对象 C# 的实例

问题描述

我对 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”有效,但另一个未设置为实例对象。重点是当我单击按钮时,它会进入非活动状态:))

标签: c#unity3d

解决方案


从引发异常的原始问题中并不完全清楚,但是firstButtonClicked在派生(子)类中重复几行然后在基(父)类中调用该方法之前确实看起来很奇怪。

例如,当您遵循代码路径时,ImagesClick会增加两次(一次在派生类中,然后在父类中一次,同样的情况发生在buttonClicked()我的猜测(因为我不知道实现)是按钮变为非活动状态因为buttonClicked()被调用了两次。

继承的优点之一是您不需要重复公共代码。您的派生类firstButtonClicked方法可能只适用于:

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

推荐阅读