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