OpenRA设计思路
在OpenRA有很多部分的内容,比如UI、渲染、单元行为等等。
不过在地图里,所有单元、建筑物、其它物品都是采用Actor来实现。每个Actor包含一系列Trait属性。
Trait属性有info类和同名称操作类构成。有一个信息类实例在同一类型的所有参与者之间共享。每个Actor创建自己的Trait实例。
每个信息类负责创建每个属性类,可以查看ITraitInfo接口,TraitInfo类负责抽象内容。
在某些情况下,trait类的构造函数需要一些参数,在这种情况下不能使用TraitInfo。这是C#泛型的一个限制。
Actor组成是通过mod定义的yaml文件来表示现出来。每个Actor都一段描述属性,通过那段描述属性来列举这个Actor具有的属性。
这些属性在查找加载mod DLL文件时就会被加载进来。每个trait都包含很多属性,都在加