C# Unity3d中的重写方法

C# Unity3d中的重写方法,c#,unity3d,C#,Unity3d,我正在尝试这样做: tabs.addTab(new Tab("Test1") { public override void OnGUI() { //My code here } }); 我在java上做过很多次(在创建对象时重写函数),但现在我使用Unity和C#,我试图找到如何做它或它的等价物 感谢阅读,有什么想法吗?我认为在c#中初始化新对象时不可能重写方法。为了做到这一点,您应该首先继承tab类,然后重写OnGUI方法,假设该方法未声明为pri

我正在尝试这样做:

tabs.addTab(new Tab("Test1")
{
    public override void OnGUI()
    {   
       //My code here
    }
});
我在java上做过很多次(在创建对象时重写函数),但现在我使用Unity和C#,我试图找到如何做它或它的等价物


感谢阅读,有什么想法吗?

我认为在c#中初始化新对象时不可能重写方法。为了做到这一点,您应该首先继承tab类,然后重写OnGUI方法,假设该方法未声明为private等。

public class MyTab : Tab
{
    public override void OnGUI()
    {
        //My code here
    }
}
我不确定C#是否允许您在创建新对象时重写方法,但您可以使用委托

委托是存储函数值的变量。像这样的东西应该或多或少满足你的需求

class Tab
{
    public delagate void MyOnGUI(); // Declare the delegate

    private MyOnGUI onGUI;  // An instance of the delegate

    public Tab(string s, MyOnGUI onGUI)
    {
        this.onGUI = onGUI;
        //...
    }

    public void OnGUI()
    {
        onGUI(); // Call the delegate
    }
}
// ...

tabs.addTab(new Tab("test", delegate(){
    // Your code here
    });

在base中运行public virtual void Update(){},并将其作为base.Update()运行

如果
OnGUI()
Tab
类的一种方法-在
选项卡
类本身中放置
公共覆盖…
,如果您想为不同的选项卡实例提供自定义逻辑-注入委托/lambda/mmm,我理解这个想法,我现在就试试,谢谢。