嵌入Enum?

时间:2011-12-30 21:03:29

标签: c# enums unity3d

(我希望这是我想要达到的正确描述 - 随意更改标题)

我正在制作一款小游戏,它将拥有不同的 GameStates 。通常我会将它们放在enum中。但这次我想做以下事情:

enum GameState
{
    Menu
    Game.Playing
    Game.Paused
    ...
}

这显然不起作用。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:3)

真的是否必要?或者你可以使用

enum GameState
{
    Menu
    Game_Playing
    Game_Paused
    ...
}

如果你真的需要一些高级行为,那么你需要一个更聪明的枚举,由类和子类组成。类似的东西:

abstract class GameState { }
class Menu : GameState { }
class Game : GameState
{
    private class _Playing : GameState { }
    private class _Paused : GameState { }

    static readonly GameState Playing = new _Playing();
    static readonly GameState Paused = new _Paused();
}

这真的值得吗?

答案 1 :(得分:2)

没有办法直接执行此操作,但您可以使用嵌套的static类“模拟”嵌套枚举。

简单但不强类型的方法:

static class GameState
{
    public const int Menu = 0;

    public static class Game
    {
        public const int Playing = 1;
        public const int Paused = 2;
    }
}

答案 2 :(得分:0)

您无法定义嵌套的枚举,但您可以在类中使用多个枚举,但它不会像树结构。

public static class GameState
 {
    public enum Game {
        Playing,
        Paused,
        ,etc..
    }

    public enum Menu {
        Menu1,
        Menu2
    }
}