使用字符串作为函数的整数名称

时间:2019-07-14 04:48:28

标签: c# string unity3d variables integer

我目前正在Unity C#的角色项目系统上工作,并为游戏项目提供永久电源。就像我们现在拥有的那样,加电状态用整数设置(0表示未获得,1表示未激活,2表示有效,因为我们希望玩家能够禁用它们。) 作为一种简化上电代码的方式,并且每个项目不需要大量脚本,我考虑在项目脚本上有一个公共String变量,我们可以在其中输入整数的列表名称,并在获得整数时会找到其整数的列表名称。 name与字符串文本匹配,然后从那里开始工作。 不幸的是,我似乎无法弄清楚它是如何工作的,甚至无法解决。任何帮助,无论是执行此操作的功能还是可以查找的位置,甚至可以确认这是不可能的,

2 个答案:

答案 0 :(得分:0)

听起来您正在描述enum,它基本上是一组相关的命名整数。当声明如下时,第一项的默认值为0,并且每个后续名称的值都比前一个大。您还可以根据需要为它们分配特定的值,但是通常不使用值本身,而只使用名称。

类似的东西:

public enum PowerUpStatus { Unobtained, Inactive, Active }

public class Character
{
    // Create property for powerup status and set the default value to unobtained
    public PowerUpStatus PowerUpStatus { get; set; } = PowerUpStatus.Unobtained;

    // rest of Character implementation omitted
}

样品用量:

class Program
{      
    public static void Main()
    {
        var character = new Character();

        // Change character's powerup status
        character.PowerUpStatus = PowerUpStatus.Active;
    }
}

如果需要,还可以通过将值强制转换为int来获得整数值:

int powerUpValue = (int) character.PowerUpStatus;

答案 1 :(得分:0)

Rufus L是正确的,因为您应该首先使用枚举,但是如果由于某种原因绝对必须将字符串映射为整数,则[Dictionary] 1是可以满足您需求的东西。字典会将输入值“映射”为输出值,因此在您的情况下,您将字符串映射为整数。

作为一个例子,您将像这样设置字典(在一个类中);现在,每个字符串都与一个整数值关联。

Dictionary<string, int> NameToStatus = new Dictionary<string, int>() {
  { "Unobtained", 0 },
  { "Inactive", 1 },
  { "Active", 2 }
}

然后您可以使用它在类似这样的函数中获取整数值。

int GetItemStatus(string status)
{
  int res = NameToStatus[status];
  return res;
}

这是可行的,但要重申一下,使用Rufus L在他的回答中建议的枚举是最佳解决方案,并且如果可能的话,您应该努力设计。