【发布时间】:2019-08-22 19:37:58
【问题描述】:
我目前正在为 Unity 创建一个包含许多变量的 C# 脚本,并且我希望这些可以从其他脚本中更改。
为此,我目前编写了一个函数,它询问变量的名称(作为字符串),然后为每个变量使用一个 switchcase。
public string charName;
public int currentHP;
public int maxHP = 100;
public int strength;
public int defense;
public void ChangeValue(string valueToChange, int howMuch)
{
switch (valueToChange)
{
case "currentHP":
currentHP += howMuch;
break;
case "maxHP":
maxHP += howMuch;
break;
case "strength":
strength += howMuch;
break;
case "defense":
defense += howMuch;
break;
}
}
会有更有效的方法吗? switch case 似乎效率很低,每次我想在脚本中添加新变量时都需要修改它。
对我来说最完美的方法是将变量作为参数询问,但我想不出办法。
感谢您的宝贵时间!
【问题讨论】:
-
为什么不定义适当的
interface并公开它? -
既然都是公开的,为什么不直接访问这些字段呢?
-
我稍后在修改变量时必须执行其他函数,这就是我无法直接访问它们的原因。我正在研究我不知道的接口,它们可能是我的问题的解决方案,谢谢!
-
我不明白……还有什么功能?也许你想看看properties。在那里,您可以在设置属性时简单地添加一些检查或其他行为...example。否则我宁愿建议Dictionary<string, int> 使用正确的
enum而不是字符串会更有效 -
属性非常适合我的需要!非常感谢!