我目前正在开发一个 C# .net XNA 游戏引擎。
我有一个关于引擎设计的问题。首先,我希望我的引擎能够包含我自己的脚本语言。为此,我想我必须能够访问游戏中所有对象的所有属性,或者只是我想要更改的那些。
我开始做的第一件事是尝试通过字符串进行访问。为此,我制作了每个“实体”,可以绘制到屏幕上的东西,都有一个包含所有属性的字典。属性的添加是在实体类中手动完成的。我从那以后读到,当你有很多字典但里面的东西不多时,它会减慢 GC。我相信这就是我现在的比赛中正在发生的事情。在开始丢失 fps 之前,我最多只能获得大约 1000 个具有基本属性(即颜色、位置、纹理)的实体。
我想知道除了我正在做的事情或使用反射之外,是否还有其他方法可以动态访问对象的属性,因为这比字典还要慢。还是我应该重新考虑整个设计?