Страница 1 из 1

Метод в родительском и дочернем классе

СообщениеДобавлено: 24 май 2022, 15:15
Alkos26Rus
Задача простая, есть родительский класс, например ClassObject и есть наследуемый, например ClassDoor. Нужно что бы метод Damage вызывался и в родительском и дочернем классе. Допустим в родительском методе происходит какой то базовый сценарий, например отнимание жизни, проигрывание звука, а в дочернем могут происходить уникальные события, зависящие от типа объекта, ну например когда бьешь по двери, то нужно чтобы сыпалась пыль.

Переназначение не подходит, потому как будет срабатывать только дочерний метод
Синтаксис:
Используется csharp
public class ClassObject : MonoBehaviour{

public virtual void Damage(float _damage){
Debug.Log("DamageParent");
}

}

public class ClassDoor : ClassObject {

public override void Damage(float _damage){
Debug.Log("DamageChild");
}

}
 


Единственное решение которое пришло в голову, это создать второй метод, но это похоже на костыли, может кто знает как это сделать по уму?
Синтаксис:
Используется csharp
public class ClassObject : MonoBehaviour{

public void Damage(float _damage){
Debug.Log("DamageParent");
DamageChild(_damage);
}

public virtual void DamageChild(float _damage){

}

}

public class ClassDoor : ClassObject {

public override void DamageChild(float _damage){
Debug.Log("DamageChild");
}

}
 

Re: Метод в родительском и дочернем классе

СообщениеДобавлено: 24 май 2022, 15:27
Tolking
public override void Damage(float _damage){
Base.Damage(float _damage);
Debug.Log("DamageChild");
}

Re: Метод в родительском и дочернем классе

СообщениеДобавлено: 24 май 2022, 17:23
Alkos26Rus
Да, вроде работает так как нужно, большое спасибо