如果你是一个游戏开发者,你可能很熟悉描述一个特性的不同变化的需要。无论它是哪种攻击类型(近战、冰、火、药丸。。。),或是敌人的状态(空闲、警戒、追逐、攻击、休息。。。),你都无法避免。实现这一点最简单的方法就是使用常量:
public static int NONE = 0; public static int MELEE = 1; public static int FIRE = 2; public static int ICE = 3; public static int POISON = 4; public int attackType = NONE;
缺点就是你无法实际控制分配给attackType的值。它可能是整型值,你也可以做点危险的事情,比如attackType++。
枚举构造
幸运的是,C#有个构造叫做enum(结构体),它专门为以下情况进行设计的:
1 // Outside your class 2 public enum AttackType { 3 None, 4 Melee, 5 Fire, 6 Ice, 7 Poison 8 } 9 10 // Inside your class 11 public AttackType attackType = AttackType.None;
enum的定义创建了一种仅支持限定范围或限定值的类型。为清晰起见,这些值被赋予符号标签,并且在需要的时候做为sting进行返回:
1 attackType = AttackType.Poison; 2 Debug.Log("Attack: " + attackType); # Prints "Attack: Poison"
在内部,每个标签都有一个整型值。枚举从0开始,每个标签被分配给下一个整数值。None是0,Melee是1,Fire是2,以此类推。你可以显式地更改标签的值。
1 public enum AttackType { 2 None, // 0 3 Melee, // 1 4 Fire, // 2 5 Ice = 4, // 4 6 Poison // 5 7 }
将enum类型转换为int类型会返回它的整型值。公平来说,枚举实际上就是整数。
枚举之所以如此有趣,是因为它们自动集成在Unity检查器中。
标签:int,enum,运算符,枚举,Flags,attackType,static,public From: https://www.cnblogs.com/chenlight/p/16725412.html