0

假设我有这样的东西

public class BodyPart : MonoBehaviour {
    private BodyPart parent;
    private List<BodyPart> children;
}

并且我希望能够在添加/删除孩子和更换父母时保持这两个链接。理想情况下,我只会创建属性,并确保在添加子项时更新父项,反之亦然。但是将列表公开为属性(甚至是只读属性)-允许我这样做

bodyPart.Children.Add(new BodyPart());

它不会调用 setter,因此父字段不会正确更新。

我见过人们将 List<...> 暴露为 ReadOnlyCollection<...> 类型的属性,但我不确定统一组件系统是否可以使用这样的属性,也许有更好的方法?另外-也许 IReadOnlyCollection 更好?

我知道我可以做一个游戏对象的层次结构,并使用内置的统一父子关系,但我不希望我的 BodyParts 是具有变换和一切的成熟游戏对象,它只是 RPG 属性和库存的模型系统。该示例也被简化了,最终我希望在该模型中编码的组件之间有更多的逻辑和几种关系。

4

0 回答 0