В C # (используя Unity, работающую над игрой) у меня есть enum с атрибутом [Flag].Я создал его дважды.Я хотел бы сравнить два перечисления.В частности, если enum A (который будет иметь несколько флагов) содержит флаг из enum B (который будет когда-либо назначен только один флаг).
Я не , пытаясь сравнитьединственное экземплярное перечисление к одному флагу (на это отвечали несколько раз).
Я подозреваю, что я мог бы сделать это, выгрузив значения с помощью GetValue и сравнив эти значения в цикле foreach, но похожеДолжен быть более прямой способ сравнения.
public enum AbilityType
{
None = 0,
Pierce = 1<<1,
Blunt = 1<<2,
Slash = 1<<3,
Water = 1<<4,
// etc.
};
public class Ability : MonoBehaviour
{
public AbilityType abilityType;
}
public class AbilitiedObject : StatisticalObject
{
public AbilityType resistances;
protected override void Awake()
{
base.Awake();
resistances = AbilityType.Pierce | AbilityType.Water;
}
public void TakeDamage(int damageAmount, AbilityType abilityType)
{
if( ) // Check if resistances contains abilityType's flag here
{
print("You are resistance to this damage type");
}
else
{
// Player takes damage
}
}
}
Я бы хотел, чтобы приведенный выше код проверял, содержит ли сопротивление флаг изilityType.В приведенном выше примере рассматриваемая атака передаст свойabilityType. Если это тип water или pierce, он должен напечатать выражение сопротивления.Если это другой тип, он должен наносить урон как обычно.