В 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.
}
}