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

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