为了制作最好的武器系统(目前在 UE4 中工作),我一直在将我的所有代码移动到组件中。
public class Weapon
{
public FiringComponent firing;
...
}
public class FiringComponent
{
public void Begin(){ ... }
}
public class FullAutoComponent : FiringComponent
{
//variables
public void Fire(){ ... }
}
public class SemiAutoComponent : FiringComponent
{
//variables
public void Fire(){ ... }
}
这种方法的问题在于,大多数触发组件最终共享了它们实现“触发”行为的很大一部分,我理解这不是很好。这导致我将很多行为转移到基类中,在本例中是触发组件,这破坏了组合模式给我带来的好处。
你们将如何使用没有代码重复的组合来实现武器系统?我到底做错了什么让组件共享这么多的实现代码?
另外,我可能在这篇文章中没有说清楚,但这是系统的第二次修订,第一次是使用组件的接口,但是代码的重复使我不得不将其中的一些移动到基类中. 尽管如此,还是很糟糕。