假设我有这样的东西
public class BodyPart : MonoBehaviour {
private BodyPart parent;
private List<BodyPart> children;
}
,我希望能够在添加/删除孩子和更换父母时保持两个链接。理想情况下,我只会创建属性,并确保在添加子代时更新父代,反之亦然。但是将list公开为一个属性(甚至是一个只读属性)-允许我这样做
bodyPart.Children.Add(new BodyPart());
不会调用设置器,因此父字段不会正确更新。
我已经看到人们将List <...>公开为ReadOnlyCollection <...>类型的属性,但是我不确定统一组件系统是否可以使用这种属性,也许还有一些更好的选择办法?另外-也许IReadOnlyCollection更好?
我知道我可以改用GameObjects的层次结构,并使用内置的父子关系统一,但是我不希望我的BodyParts是具有转换和所有功能的成熟GameObjects,它只是RPG的模型属性和库存系统。同样,该示例也得到了简化,最终我希望在该模型中编码的组件之间具有更多的逻辑和几种关系。