string参数为需要修改的变量,dynamic需要一个int/float数值,将从playvalue类中检索对应变量修改数值
public static class playerValue{public static int MeleeDMG;//近战伤害public static int RangedDMG;//远程伤害public static int MagicDMG;//魔法伤害public static int DEF;//防御力public static int HP;//生命值public static int MP;//法力值public static float MagicSPD;//技能极速public static float MoveSpeed;//移动速度public static float ATKSpeed;//攻击速度public static float Suck;//吸血public static float Element;//元素加成public static float Penetrate;//护甲穿透public static float CRIT;//暴击率public static float CRITDMG;//暴击伤害public static float HPReply;//生命回复public static float MPReply;//魔法回复}void IncreaseValue(string variableName, dynamic amount){System.Type type = typeof(playerValue);System.Reflection.FieldInfo field = type.GetField(variableName);if (field != null){if (field.FieldType == typeof(int)){int currentValue = (int)field.GetValue(null);int newValue = currentValue + (int)amount;field.SetValue(null, newValue);}else if (field.FieldType == typeof(float)){float currentValue = (float)field.GetValue(null);float newValue = currentValue + amount;field.SetValue(null, newValue);}else{Debug.LogError("Unsupported field type.");}}else{Debug.LogError("Field not found.");}}