我正在尝试与C#一起为一个项目构建一个升级系统,并且想知道修改一个变量的最佳方法是什么,一个自定义对象的数组(大小可能会有所不同),它们有多少应该有的信息变量会被改变。
脑海中浮现出一些想法,但这是我的担忧:第一个是使用属性:
public float SomeStat{
get{
float modStat = 0;
foreach(StatChanger Stat in StatChangers){
modStat += Stat.valueChange;
}
return modStat;
}
}
这将彻底解决我的问题,但我担心的是,当访问该属性时,例如每个框架,列表中的大量项目都会有性能下降
第二个是调用一个更新变量的函数,并将其存储在另一个变量中,以便每帧使用而不会出现性能下降:
public float someStat = 10;
public float someStatModifed;
void UpdateStat(){
someStatModifed = someStat;
foreach(StatChanger Stat in StatChangers){
someStatModifed += Stat.valueChange;
}
}
这有效,但我可能会忘记调用它,当有多个需要更改的变量时,它会变得更加混乱。
我应该使用这两者的组合还是有更好的方法呢?
答案 0 :(得分:0)
我不能说相对于其他任何东西的性能,但你可以使用LINQ:
someStatModifed += StatChangers.Sum(stat => stat.valueChange);
另外,在出现问题之前,不要过于担心优化它。 尝试来破解它,但不要修复它,除非它对大数据集显而易见。