Quick answer: Use [Export(PropertyHint.Flags)] on the field, and mark the enum with [Flags] with power-of-two values.

A C# enemy script exports a “DamageTypes” enum. The Inspector shows a single dropdown instead of multi-select checkboxes — the flags hint wasn’t applied.

Define the Flags Enum

[Flags]
public enum DamageType
{
    None  = 0,
    Fire  = 1 << 0,
    Ice   = 1 << 1,
    Poison = 1 << 2,
}

Power-of-two values so they combine bitwise. [Flags] makes ToString() show combined names.

Export with the Flags Hint

[Export(PropertyHint.Flags, "Fire,Ice,Poison")]
public DamageType Resistances { get; set; }

PropertyHint.Flags tells the Inspector to draw checkboxes. The hint string lists the names in bit order.

Reading the Value

if (Resistances.HasFlag(DamageType.Fire))
{
    incomingDamage *= 0.5f;
}

HasFlag tests individual bits. Combine with bitwise OR to set multiple.

Verifying

The Inspector shows a checkbox per flag. Checking Fire + Ice stores the combined value. HasFlag reads them back correctly at runtime.

“[Flags] on the enum, PropertyHint.Flags on the export. Both needed for checkbox UI.”

For layer-style data (collision categories, faction masks), flags enums are far cleaner than parallel bool arrays in the Inspector.