我有这个基于ID返回怪物对象的方法。
如果ID在某个数组中,则返回定义。
有效!但它看起来有点像黑客。 Ids可能会改变,或者我可能需要一个新的ID列表,而且我认为我现在设置它的方式看起来很糟糕。
有没有办法在代码中的其他地方存储整数,然后只做这样的事情?
if (room.Encounter.Id.MonsterType(dungeonMonsterTypes))
这是我现在的代码:
public static bool MonsterType<T>(this T item, params T[] list)
{
return list.Contains(item);
}
public static MonsterDefinition GetMonsterDefinition(this Rgame room)
{
var monster = room.Encounter.MonsterDefinition;
if (room.Encounter.Id.MonsterType(190, 68, 115, 59, 40, 66, 112, 421))
return new MonsterDefinition(monster);
return null;
}
答案 0 :(得分:1)
使用哈希集 -
HashSet<int> monsterIDs = new HashSet<int>() { 190, 68, 115, 59, 40, 66, 112, 421 };
...
if (monsterIDs.Contains(room.Encounter.Id))
return new MonsterDefinition(monster);
你也可以使用enum而不是pure int,以便更具可读性。