这是一个相当简单的问题,我有一个实现常见GUI元素的基类,以及一系列我想重写给定方法的子类,以便他们可以在普通控制(即Prev和Next按钮)。在C中覆盖的方法#
所以我有这个
public class MetalGUI : BaseGUI {
new protected void OnGUI()
{
base.OnGUI();
if(GUI.Button(prevRect, "BACK", "ButtonLeft"))
OnPrev();
if(GUI.Button(nextRect, "NEXT", "ButtonRight"))
OnNext();
}
virtual protected void OnPrev(){}
virtual protected void OnNext(){}
}
,这是子类的一个
public class MissionSelectGUI : MetalGUI {
new void OnGUI()
{
base.OnGUI();
}
new protected void OnPrev()
{
Application.LoadLevel("mainMenu");
}
new protected void OnNext()
{
Application.LoadLevel("selectPlayer");
}
}
(这两个类都被剥夺掉这种情况下的东西,非必要)
问题是,当我有一个MissionSelectGUI
的成员实例化时,MetalGUI
上的OnPrev
和OnNext
正在调用而不是重写方法。为什么是这样?
该死的笨语言,我说 – Lacrymology 2011-06-15 19:44:02
@Llammology嗯,当然,这有点冗长,但它可以让你更好地控制代码的行为。 – 2011-06-15 19:46:03
要在Etienne所说的内容上添加一点:只有在将对象引用为派生类时才会调用“new”方法。如果您将派生类引用为基类,它将调用基本方法。这在我从未遇到的一些理论情况下可能是非常有用的。 – Coeffect 2011-06-15 19:57:19