0

我正在尝试为与 C# 统一的项目构建升级系统,并且想知道通过一组自定义对象(大小可能会有所不同)来修改变量的最佳方法是什么,这些对象包含变量应该是多少的信息改变了。

一些想法浮现在脑海,但这是我的担忧:

  1. 第一个是使用属性:

    public float SomeStat{
         get{
            float modStat = 0;
    
            foreach(StatChanger Stat in StatChangers){
               modStat += Stat.valueChange;
            }
    
            return modStat;
          }
    }
    

    这将非常干净地解决我的问题,但我担心的是,当访问该属性时,例如每一帧,列表中的大量项目都会出现性能下降

  2. 第二个是调用一个函数来更新变量并将其存储在另一个变量中,以便每一帧都使用而不会降低性能:

    public float someStat = 10;
    public float someStatModifed;
    
    void UpdateStat(){
         someStatModifed = someStat;
    
         foreach(StatChanger Stat in StatChangers){
            someStatModifed += Stat.valueChange;
         }
    }
    

    这可行,但我可能会忘记调用它,并且当有多个需要更改的变量时,它会变得更加混乱。

我应该使用这两者的组合还是有更好的方法呢?

4

1 回答 1

0

我不能说性能会是什么,相对于其他任何东西,但你可以使用 LINQ:

someStatModifed += StatChangers.Sum(stat => stat.valueChange);

另外,在出现问题之前不要太担心优化它。一定要尝试打破它,但不要修复它,除非它即使在大型数据集下也很明显。

于 2013-04-10T21:34:18.160 回答