C#之枚举以及Flags标签
微软文档:https://docs.microsoft.com/zh-cn/dotnet/api/system.enum?view=net-5.0

说起枚举,大家应该都不陌生,这是个可以把参数名称化而且还比直接用字符串更省空间的类.

如上图所示,我们可以我们所需要的的值范围手动设定,从而避免使用字符串带来的一系列检查,
如果没有传入正确的参数,那么在编译阶段IDE也能尽早发现错误.
并且使用枚举还可以很好的与Switch语句进行配合:

虽然枚举可以方便快捷的用来分类,但是一般的枚举只能表示单个属性,如果一个老师非常厉害,能文能武,我们有办法通过枚举来给他设定标签吗?
答案是有的,我们可以使用[Flags]标签来让我们的枚举可以同时选中多个状态:

相信看到这里,很多小伙伴一定马上就想到了,这就是二进制,我们使用整型中的某一位,来表示其中一个属性,并通过枚举,给该属性赋予了一个拥有可读性的名字,需要注意的一点是,为了保证互斥,我们只能在其中一位设置值,不然就会导致枚举的重合,以及目前只有4个字节,而一个字节8位,所以非独占枚举顶多只有32个状态.
而在Unity中,我们就可以这么用:


看到这个多状态枚举,你有没有想到什么东西呢?