我对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”有效,但另一个未设置为实例对象。关键是当我单击按钮时,它将进入非活动状态:))
答案 0 :(得分:0)
从最初的问题尚不清楚,在哪里引发了异常,但是在派生的(子)类中重复firstButtonClicked
行之后再调用in中的方法看起来确实很奇怪。基础(父)类。
例如,当您遵循代码路径时,ImagesClick
会递增两次(在派生类中一次,然后在父类中一次,buttonClicked()
和我的猜测也会发生相同的情况(因为我不知道具体实现)是因为buttonClicked()
被两次调用了,按钮才处于无效状态。
继承的优点之一是您无需重复通用代码。您的派生类firstButtonClicked
方法可能仅适用于:
public override void firstButtonClicked()
{
finalAnswer += "f";
TryInheritance =finalAnswer;
base.firstButtonClicked();
}