У меня есть виртуальный метод в моем базовом классе, который перезаписывается в унаследованном классе.
Я хочу иметь возможность выходить как из базового виртуального метода, так и из метода переопределения из базового виртуального метода.
Использование bool для достижения этой цели не выглядит программно правильным.В качестве bools я думал, что в основном используются для проверки чего-либо
public virtual bool IsHit(int damage, Vector3 hitDirection){
if (IsDead) return false;
aiHealth -=damage;
if (aiHealth <= 0) {
Death();
return false;
}
return true;
}
public override bool IsHit(int damage, Vector3 hitDirection){
if (!base.IsHit(damage, hitDirection)) return false;
//Do stuff when enemy is hit.
return true;
}
Еще один способ, которым я устал, - это тоже не чистый внешний вид.
public virtual void IsHit(int damage, Vector3 hitDirection){
if (IsDead) return;
aiHealth -=damage;
if (aiHealth <= 0) {
Death();
return false;
}
}
public override void IsHit(int damage, Vector3 hitDirection){
base.IsHit(damage, hitDirection);
if (IsDead) return;
//Do stuff.
}
Но тогда мне нужно дважды вызвать чек 'IsDead'.
В идеале я хотел бы, чтобы этот метод был пустым и иметь некоторую строку кода в виртуальном вызове void, возвращать и останавливать код, выполняемый в методе переопределения.
Или знать, какой из них являетсясамый правильный путь.