2

我正在用 C# & XNA 制作一个 2D 游戏。我目前正在保存和加载,所有数据都存储在文本文件中。

每个精灵都有一个状态:

public enum SpriteState
{
    Alive,
    Dead,
    Chasing,
    Sleeping,
    Waiting 
}

保存时我只是执行这行代码:

StreamWriter.WriteLine(gameState); 

现在,当我加载游戏时,我必须读取文本文件的那一行,将其存储在字符串变量中,并执行以下操作:

string inType = StreamReader.ReadLine();

if(inType == "Alive")
   //Set the sprites state to alive
else if(inType == "Dead")
   //Set the sprites state to alive

等等......所以我的问题是:有没有更好的方法从文本文件中读取枚举类型并分配它?

非常感谢

4

2 回答 2

10

您正在寻找

(SpriteState) Enum.Parse(typeof(SpriteState), inType)

这会将字符串解析为枚举值。

您可能还希望Dictionary<SpriteState, Action<...>>将状态映射到采取适当操作的委托(lambda 表达式)。

于 2013-04-22T13:41:57.433 回答
4

尝试这个:

Enum.Parse(typeof(SpriteState), yourString);

您也可以使用此方法:

public static T ParseEnum<T>(string value)
{
    return (T)Enum.Parse(typeof(T), value, true);
}
于 2013-04-22T13:42:08.033 回答