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.