Unity3d枚举与位操作

在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地址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章