C# 在unity warning中使用新关键字Ontrigger
我继承了一个父类,并在chid类上添加了新的私有void OnTiggerEnter2D,父类也有一个OnTiggerEnter2D方法,但它表示new关键字不是必需的。我只是想澄清一下为什么内置的OnTiggerEnter2D不需要新的关键字。在C#中,只有当类的任何父级使用具有相同名称和签名的成员,并且希望完全忽略父级类中的成员时,才需要C# 在unity warning中使用新关键字Ontrigger,c#,unity3d,game-development,C#,Unity3d,Game Development,我继承了一个父类,并在chid类上添加了新的私有void OnTiggerEnter2D,父类也有一个OnTiggerEnter2D方法,但它表示new关键字不是必需的。我只是想澄清一下为什么内置的OnTiggerEnter2D不需要新的关键字。在C#中,只有当类的任何父级使用具有相同名称和签名的成员,并且希望完全忽略父级类中的成员时,才需要new关键字 例如: public class Parent { public void OnTriggerEnter() {
new
关键字
例如:
public class Parent
{
public void OnTriggerEnter()
{
UnityEngine.Debug.Log("Message From Parent");
}
}
public class Child : Parent
{
public new void OnTriggerEnter()
{
UnityEngine.Debug.Log("Message From Child");
}
}
public class Test
{
public void TestRunner()
{
Parent parent = new Child();
parent.OnTriggerEnter(); // output Message From Child.
}
}
这种行为与重写虚拟方法而不调用其base.VirtualMethod完全相同
public class Parent
{
public virtual void OnTriggerEnter()
{
UnityEngine.Debug.Log("Message From Parent");
}
}
public class Child : Parent
{
public override void OnTriggerEnter()
{
//base.OnTriggerEnter();
UnityEngine.Debug.Log("Message From Child");
}
}
public class Test
{
public void TestRunner()
{
Parent parent = new Child();
parent.OnTriggerEnter(); // output Message From Child.
}
}
在C#中,只有当类的任何父类使用具有相同名称和签名的成员,并且您希望完全忽略父类中的成员时,才需要new
关键字
例如:
public class Parent
{
public void OnTriggerEnter()
{
UnityEngine.Debug.Log("Message From Parent");
}
}
public class Child : Parent
{
public new void OnTriggerEnter()
{
UnityEngine.Debug.Log("Message From Child");
}
}
public class Test
{
public void TestRunner()
{
Parent parent = new Child();
parent.OnTriggerEnter(); // output Message From Child.
}
}
这种行为与重写虚拟方法而不调用其base.VirtualMethod完全相同
public class Parent
{
public virtual void OnTriggerEnter()
{
UnityEngine.Debug.Log("Message From Parent");
}
}
public class Child : Parent
{
public override void OnTriggerEnter()
{
//base.OnTriggerEnter();
UnityEngine.Debug.Log("Message From Child");
}
}
public class Test
{
public void TestRunner()
{
Parent parent = new Child();
parent.OnTriggerEnter(); // output Message From Child.
}
}
这是统一魔法:D。基本上,如果你不在你的类中定义它,基本方法不会被调用,也不存在。这不是统一魔法…这是统一魔法:D。基本上,如果你不在你的类中定义它,基本方法不会被调用,也不存在。这不是统一魔法…是的,我在我的基本类中有一个相同的方法名称是的,我有一个相同的名称我的基类中的方法名