📜  unity没有找到合适的方法来覆盖 (1)

📅  最后修改于: 2023-12-03 14:48:13.262000             🧑  作者: Mango

Unity没有找到合适的方法来覆盖

在Unity中,一个类想要覆盖(override)父类的方法,通常需要在方法声明前加上关键字“override”。但有时候在特定情况下,Unity会提示没有找到合适的方法来覆盖。

这个问题的根源在于父类的方法并没有被正确地实现。通常情况下,如果父类的方法是虚方法(virtual),那么子类就可以使用override来将其重写。但如果父类的方法并非虚方法,子类就无法进行覆盖。

解决这个问题的方法有两种。一种是将父类的方法改为虚方法;另一种是在子类中新写一个同名的方法,并在其中调用父类的方法。这种方法需要使用关键字“new”。

下面是一个示例代码,演示如何通过新写一个同名方法的方式来覆盖父类的方法:

public class ParentClass
{
    public void DoSomething()
    {
        Debug.Log("ParentClass do something");
    }
}
 
public class ChildClass : ParentClass
{
    public new void DoSomething()
    {
        base.DoSomething();
        Debug.Log("ChildClass do something");
    }
}

以上代码中,ParentClass和ChildClass分别是父类和子类。我们在ParentClass中定义了一个DoSomething方法,然后在ChildClass中定义了一个同名的方法。在ChildClass的DoSomething方法中,我们用base关键字调用了父类的DoSomething方法,然后在其后输出了一个额外的日志。

通过这种方式覆盖父类的方法,在代码中就不会再出现“Unity没有找到合适的方法来覆盖”的提示了。