我工作的一个游戏,将有可能专门针对每个怪物的四肢,所以你可以瞄准头部,腿部,循环...通过父/子结构
我有这个构造函数:
public Humanoid(Race race, Gender gender, string firstname, string lastname = null)
{
this.Legs = new List<Leg> { new Leg(), new Leg() };
this.Torso = new Torso();
this.Arms = new List<Arm> { new Arm(), new Arm() };
this.Heads = new List<Head>
{
new Head
{
Ears = new List<Ear> { new Ear(), new Ear() },
Eyes = new List<Eye> { new Eye(), new Eye() }
}
};
}
所有这些肢体从接口ILimb
继承。
什么是最好的方式能够循环所有的肢体,包括孩子(如适用)?
我可以添加一个protected List<ILimb> { get; set; }
然后添加每个,但这是多余的。
任何想法或改进建议?
我会使用具有自定义属性的System.Reflection库。用一些属性标记您的肢体,然后使用反射库获取Humanoid的属性,然后根据自定义属性过滤该列表。那么你有一个你可以通过https://msdn.microsoft.com/en-us/library/a4a92379(v=vs.110).aspx –
进行遍历的所有'ILimb'的列表'Arms'列在一起并循环播放。 –
@MattBurland:你的意思是concat? – Spikee