枚举是一个比较特别的存在,他是一个被命名的整形常量的集合,一般用它来表示状态、类型等等。
注意:申明枚举和申明枚举变量 是两个概念
申明枚举:相当于是 创建一个自定义的枚举类型。
申明枚举变量: 使用申明的自定义枚举类型创建一个枚举变量。
枚举名:以E或者E_开头,作为我们的命名规范。
- enum E_自定义枚举名
- {
- 自定义枚举项名字, //枚举中包裹的 整形常量 第一个默认值是0 下面会依次累加
- 自定义枚举项名字1,//1
- 自定义枚举项名字2,//2
- }
- enum E_自定义枚举名
- {
- 自定义枚举项名字 = 5, //第一个枚举项的默认值 变成5了
- 自定义枚举项名字1,// 6
- 自定义枚举项名字2 = 100,
- 自定义枚举项名字3,//101
- 自定义枚举项名字4,//102
- }
1.namespace语句块中(常用)。
2.class语句块中,struct语句块中。
注意:枚举不能在函数语句块中申明!!!
- enum E_MonsterType
- {
- Normal,//0
-
- Boss,//1
- }
-
- enum E_PlayerType
- {
- Main,
- Other,
- }
申明枚举变量
自定义的枚举类型 变量名 = 默认值;(自定义的枚举类型.枚举项)
- E_PlayerType playerType = E_PlayerType.Other;
-
- if( playerType == E_PlayerType.Main )
- {
- Console.WriteLine("主玩家逻辑");
- }
- else if(playerType == E_PlayerType.Other)
- {
- Console.WriteLine("其它玩家逻辑");
- }
-
- //枚举和switch是天生一对
- E_MonsterType monsterType = E_MonsterType.Boss;
- switch (monsterType)
- {
- case E_MonsterType.Normal:
- //Console.WriteLine("普通怪物逻辑");
- //break;
- case E_MonsterType.Boss:
- Console.WriteLine("Boss逻辑");
- break;
- default:
- break;
- }
- int i = (int)playerType;
- Console.WriteLine(i);
- //int 转枚举
- playerType = 0;
- string str = playerType.ToString();
- Console.WriteLine(str);
Parse后,第一个参数 :你要转为的是哪个枚举类型;第二个参数:用于转换的对应枚举项的字符串。
转换完毕后是一个通用的类型,我们需要用括号强转成我们想要的目标枚举类型。
- playerType = (E_PlayerType)Enum.Parse(typeof(E_PlayerType), "Other");
- Console.WriteLine(playerType);
枚举的作用
在游戏开发中,对象很多时候会有许多的状态。
比如玩家有一个动作状态,我们需要用一个变量或者标识来表示当前玩家处于的是哪种状态。
综合考虑,可能会使用int来表示他的状态。
1 行走 2 待机 3 跑步 4 跳跃……等等。
枚举可以帮助我们清晰的分清楚状态的含义。