在unity3d开发中,我们常常需要使用到各种状态,比如角色的状态,物品的使用后的状态等等
举个例子,物品有很多中类型,比如食物、武器、医疗物品等等
那么我们可以这样定义
[System.Flags] //很多时候我们的物品有多种混合,所以这里需要flags
public enum itemType
{
Food = 1 << 1, //枚举值
Weapon = 1 << 2,
MedicalSupplies = 1 << 3
}
然后
public itemType item;
这样就定义了一个itemType
这里我使用了一个非常非常强大,而且好用的插件,我也强烈推荐,Sirenix
用了之后就停不下来了。。。
如何检测它是否有哪种类型呢?
非常简单
if ((item & itemType.Food) == itemType.Food)
{
isFood = true;
}
这里的isFood是bool类型,意思就是判断这个物品是不是含有Food
如果含有Food,那么isFood就是真,反而则是false
如何给物品添加多种类型呢?
也非常简单
item = itemType.Food | itemType.Weapon;
这样item就变成了同时拥有Food和Weapon两种类型
如何单个单个添加?
item |= itemType.Food;
那么如何单个单个移除呢?
item &= ~itemType.Food;
注意有一个“~”符号关于更多的位操作可以参考wiki地址