我在Unity编写游戏,遇到了访问子类属性的问题。
我有一个名为“Component”的基类,它只用于将继承它的所有子类组合在一起。我有一个“Track”类,它继承自具有一些公共属性的Component。
public class Track : Component {
public int x;
public int y;
}
另一个类保留一组Components并对其进行更改。
public class Example: MonoBehaviour {
private Component[] components = new Component[10];
void Start () {
components[0] = new Track();
components[0].x = 5; //Does not compile
}
}
我不确定如何使用基类Component的数组访问Track中的属性。我感谢任何人都可以提供帮助。谢谢!
答案 0 :(得分:3)
如果您确定它是Track
,您可以将其投射到该类型:
components[0] = new Track();
((Track)components[0]).x = 5;
在这种情况下,您确定它是Track
因为您刚刚实例化了它。
但是,如果可能的其他类也可以从Component
继承,并且您的components
集合可能没有Track
的实例,那么您会想要在完成作业之前先检查一下。
var track = components[0] as Track;
if (track != null)
track.x = 5;