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