Unity3d中的重写方法

时间:2012-03-20 12:02:48

标签: c# unity3d

我试图做这样的事情:

tabs.addTab(new Tab("Test1")
{
    public override void OnGUI()
    {   
       //My code here
    }
});

我已经在java上做了很多次(在创建对象时覆盖了一个函数),但是现在我正在使用Unity和C#,我正试图找到如何做它或它的等价物。

感谢阅读,不知道吗?

3 个答案:

答案 0 :(得分:2)

我不确定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
    });

答案 1 :(得分:0)

我不认为在c#中初始化新对象时可以覆盖方法。为此,您应首先继承选项卡类,然后重写OnGUI方法,假设此方法未声明为私有等。

public class MyTab : Tab
{
    public override void OnGUI()
    {
        //My code here
    }
}

答案 2 :(得分:0)

基础中的

public virtual void Update(){}并将其作为base.Update();

运行