我正在制作一个游戏,其中每个 Actor 都由一个 GameObjectController
表示。可以参与战斗的游戏对象实现ICombatant
。如何指定战斗函数的参数必须继承自 GameObjectController
并实现 ICombatant
?或者这是否表明我的代码结构不佳?
public void ComputeAttackUpdate(ICombatant attacker, AttackType attackType, ICombatant victim)
在上面的代码中,我希望attacker
和victim
继承自GameObjectController
并实现ICombatant
。这在语法上可能吗?
最佳答案
我想说这可能表明您可以以某种方式进行重组,例如,拥有一个攻击者和受害者继承自的 Combatant 基类,该基类继承自 GameObjectController 并实现 ICombatant。
但是,您可以做类似的事情
ComputeAttackUpdate<T,U>(T attacker, AttackType attackType, U victim)
where T: ICombatant, GameObjectController
where U: ICombatant, GameObjectController
虽然我可能不会。
关于C#:指定一个函数arg必须继承自一个类,并实现一个接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2534750/