我正在使用Unity3D并试图实现以下目标。 我想在类中存储一些参数以及“特殊规则” - 它们可以作为此类或其他类中的函数。
理想情况下,我会想要一些表现得像这样的东西:
public class Weapon
{
public DamageHandler damageHandler; //script that have all special rule functions
public string weaponName;
public int damage;
public ???? specialRule; //this is the rule of interest
public void DealDamage()
{
damageHandler = GetComponent<DamageHandler>();
damageHandler.specialRule(damage); //call the function that is set in Weapon Class
}
}
我知道我可以将specialRule保存为字符串并使用反射。有没有其他方式/更好的方法来处理这种情况?
答案 0 :(得分:4)
您要找的是Action<int>
我的朋友。
public class Weapon
{
public DamageHandler damageHandler; //script that have all special rule functions
public string weaponName;
public int damage;
public Action<int> specialRule; //this is the rule of interest
public void DealDamage()
{
damageHandler = GetComponent<DamageHandler>();
damageHandler.specialRule(damage); //I call the function with the name that is set in Weapon Class
}
}
Action<ParamType1, ParamType2, ParamType3, .....>
代表void
函数代理。
Func<ParamType1, ParamType2, ParamType3, ....., ReturnType>
表示具有返回值
每个人可以从1或2个类型的参数中获取,我相信大约17个左右