string参数为需要修改的变量,dynamic需要一个int/float数值,将从playvalue类中检索对应变量修改数值文章来源地址https://www.toymoban.com/news/detail-690643.html
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.");
}
}
文章来源:https://www.toymoban.com/news/detail-690643.html
到了这里,关于(unity/c#)反射为类赋值小工具的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!