【发布时间】:2016-06-06 18:47:04
【问题描述】:
跳到问题的第三段。
背景:我正在创建一个 2D 宇宙飞船游戏,其中一个游戏机制是将电源分配给飞船的 7 个不同部分,以适应您当前所处的情况。有您可以随时切换到的预设,称为电源配置。我将电源配置存储在 3 个不同的数组中,如下所示:
int[] powerConfiguration1 = new int[7] {10,10,10,10,20,20,20};
int[] powerConfiguration2 = new int[7] {20,20,20,10,10,10,10};
int[] powerConfiguration3 = new int[7] {10,20,10,20,10,20,10};
当您切换配置时,它会调用一个方法来执行此操作。该方法进行一些计算以确定切换配置需要多长时间。但是,在播放器切换到三种配置中的任何一种的情况下,我不想制作 switch 语句并多次复制/粘贴代码,而是想使用 System.Reflections 中的 PropertyInfo 来选择我需要从中提取值的属性。
问题:问题是我不知道如何从数组中获取项目。这是我到目前为止所拥有的,我试图确定总共需要重新路由多少功率并将其全部添加到变量中。 0 是我决定存储屏蔽能量的配置中的索引。 powerToShields 是路由到屏蔽的当前电源。
void switchConfiguration(int number) {
PropertyInfo powerConfiguration = GetType().GetProperty("powerConfiguration" + number);
int powerToReroute = 0;
powerToReroute += Mathf.Abs(powerToShields - powerConfiguration[0]);
谁能解释我做错了什么和/或告诉我如何解决它?或者,有没有更好的方法来做到这一点?
编辑 1:这是用 C# (Unity) 编码的。
【问题讨论】:
-
您发布的代码看起来像C#代码,请确认是
-
是的,它是 C#。是否有一个选项我可以在某处打勾,告诉读者它是 C#,或者你是说我应该在帖子的某处说它是 C#?
-
看起来你明白了,它现在被标记为 C#
-
好吧,很酷。有什么见解,还是您只是想为其他人澄清一下?
标签: c# arrays unity5 propertyinfo