Как дописать что-то в унаследованный метод, но чтобы старый функционал сохранился, C#?

Работаю с unity, мне нужно чтобы были разные типы врагов, но у них есть общий функционал (передвижение, например), поэтому я унаследовал от общего класса новый, и мне нужно в дочернем дописать что-то в метод Update так, чтобы сохранился старый функционал.


Ответы (1 шт):

Автор решения: aepot

Полиморфизм, ничего необычного

public class Enemy
{
    public virtual void Move()
    {
        Debug.Log("base move");
    }
}

public class Beast : Enemy
{
    public override void Move()
    {
        Debug.Log("override move");
        base.Move();
    }
}

Проверка

Enemy enemy = new Beast();
enemy.Move();

Вывод в отладку

override move
base move

То есть у родителя пометьте метод Update() как virtual, а у наследника как override и вызовите код родителя из наследника через base.Update() в начале или конце метода, в зависимости от ваших потребностей.

→ Ссылка