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.");
}
}