Unity GetComponent获取基类,而不是派生类



类B继承自类A。

我叫:GetComponent<A>.SomeFunction();

类B在组件上,它覆盖SomeFunction()。但是SomeFunction()只运行在基类中。

如果我调用GetComponent<B>.SomeFunction(),那么它确实会运行派生类。

这是Unity的预期行为吗?

编辑:

A类

public class Attacker : MonoBehaviour
{
// The range a unit can attack in, based on where it is currently standing
public virtual HashSet<Tile> GetAttackRangeTiles() {
print("base invocation")
return new HashSet<Tile>();
}
}

B类

public class Mage : Attacker
{
override
public HashSet<Tile> GetAttackRangeTiles() {
print("derived invocation");
return new HashSet<Tile>();
}
}

Board.cs

public class Board : MonoBehaviour {
public void ProcessUnitAttackSelect(Unit unit) {
foreach (Tile tile in unit.GetComponent<Attacker>().GetAttackRangeTiles()) {
tile.SetState(Tile.State.AttackSelect);
}
}
}

上面的印刷品";基本调用";,而不是";派生调用";。

弄清楚了——类B类A都是对象上的组件。通过移除类A(父类(,B按预期运行。讨厌的虫子!

最新更新