这里记录一下在游戏开发中,系统设计及业务逻辑处理中可以用到的枚举的一些小技巧。
(一)枚举集合的判断处理
集合判断通常用于子集的判断,判断某个大类是否包含某个类型
假设当前我们有一个物品类型的枚举
public enum EItemType
{
// 1001——1004 资源
Food = 1001,
Wood = 1002,
Iron = 1003,
Oil = 1004,
// 1006——1010 碎片
Cap_Debris = 1006,
Cloth_Debris = 1007,
Pant_Debris = 1008,
Shoe_Debris = 1009,
Weppon_Debris = 1010,
// 1011——1013 技能书
Skill_Book_A = 1011,
Skill_Book_B = 1012,
Skill_Book_C = 1013,
// 以上都是物品类型
SINGLE,
// 以下都是物品集合
RESURCE, // 资源
DEBRIS, // 碎片
SKILL_BOOK, // 技能书
// MAX为标记位
MAX,
}
从这个枚举中的注释可以看出 “资源”={“木”,"粮","铁","油","铜"},“碎片"={“衣服碎片”,"武器碎片","裤子碎片","帽子碎片","鞋碎片"} 还有技能书
对于集合的处理可以使用两种方式,一是数组,二是通过按位与或运算,通过数组的方式就不说了,这里记录一下按位与或运算的方式。
集合判断工具类
public static class ItemTypeUtil
{
private static readonly long[] Types = new long[(int)EItemType.MAX];
public static bool IsType(EItemType type1, EItemType type2)
{
if (0 > type1 || type1 >= EItemType.MAX)