Наличие базового класса, который обеспечивает общие функциональные возможности для объектов, является общим и рекомендуемым в Unity.
Вместо вызова класса Bomb
, назовите его чем-то более общим, например ExplodableDevice
(как @zmbqответил).Я бы, однако, пояснил, что устройство взрывается из-за таймера, поэтому, возможно, TimerExplodableDevice
.Обратите внимание, что базовый класс должен наследоваться от MonoBehaviour
, так как в противном случае вы не сможете использовать эти объекты полностью (поскольку c # не допускает множественное наследование).
Примером такой реализации будет:
public interface IKillable
{
void Kill();
}
public interface IExplodable : IKillable
{
float TimeLeft { get; set; }
void Timer(float timeToExplode);
}
public abstract class TimerExplodableDevice: MonoBehaviour, IExplodable
{
public float TimeLeft { get; set; }
public virtual void Kill()
{
//Destroy the object
}
public virtual void Timer(float timeLeft)
{
if (TimeLeft <= 0)
{
Kill();
}
}
}
// this should be in a "Devices" folder, or otherwise be called appropriately
public class Backpack : TimerExplodableDevice
{
void Start()
{
TimeLeft = 100;
}
}
// this should be in a "Devices" folder, or otherwise be called appropriately
public class Bomb : TimerExplodableDevice
{
void Start()
{
TimeLeft = 10;
}
}