【发布时间】:2011-09-15 20:04:35
【问题描述】:
这是一个相当简单的问题,我有一个实现通用 GUI 元素的基类,以及一系列我想要覆盖给定方法的子类,因此它们可以在通用控件上实现自己的行为(即, Prev 和 Next 按钮)。
所以我有这个
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 被调用,而不是被覆盖的方法。这是为什么呢?
【问题讨论】:
标签: c# .net inheritance overriding virtual