修改特定孩子的班级

时间:2013-03-19 09:28:06

标签: c# unity3d

我有这个抽象类,它包含一个名为Hierarchy的类,它包含一些变量(unity3d不会在检查器窗口中显示Structs)。

这个抽象类有一些子节点,而对于它们中的大多数,这个Hierarchy类是合适的,其中一个不是。所以我想知道是否有可能为这个孩子设置一个特定的Hierarchy类,而剩下的孩子仍然使用父Hierarchy类?

    public class Hierarchy
{   
public Points points;
}

public class Points
{   
public GameObject[] pointsToActivateOnCorrectAnswer;
public GameObject[] pointsToDeactivateOnCorrectAnswer;

public GameObject[] pointsToActivateOnWrongAnswer;
public GameObject[] pointsToDeactivateOnWrongAnswer;
}
public Hierarchy hierarchy;

更具体地说,我希望修改一个孩子而不是其他孩子的Points课程的内容,是否可能?

2 个答案:

答案 0 :(得分:1)

我建议使用泛型类。像这样......

public class Points
{
    ...
}

public class TextAndButton
{
    ...
}

public class Hierarchy<T>
{
    T Value { get; set; }
    Hierarchy<T> Hierarchy { get; set; }
}

因此,您可以像使用Hierarchy<Point>的实例一样轻松地使用Hierarchy<TextAndButton>的实例。

答案 1 :(得分:0)

我可能不在话题,但这看起来像是一个完美的界面用例。所有类(如Point类)都可以实现一个公共接口,让我们称之为IChild,它引用了层次结构需要更新或访问的常用方法和变量。然后,您的Hierarchy类需要IChild成员而不是特定的类,如Point。

当你只需要访问常用方法时,你可以引用IChild,当你需要一个特定的类时,比如Point,你只需要访问它。