Навскидку, флаги можно использовать в качестве тегов. Допустим есть игра в жанре Match3. Элементы на поле могут иметь различные свойства: возможность уничтожения, объединения с другими фишками, способность к перемещению и т.д.
[Flags]
public enum Tag
{
Breakable = 1,
Mergeable = 2,
Movable = 4,
}
public sealed class Chip : MonoBehaviour
{
[SerializeField]
private Tag _tag;
public bool HasTag(Tag tag) => _tag.HasFlag(tag);
}
Без флагов подобный функционал будет выглядеть чуть более объёмным и для внесения изменений потребуется больше телодвижений.
public sealed class Chip : MonoBehaviour
{
[SerializeField]
private bool _breakable;
[SerializeField]
private bool _mergeable;
[SerializeField]
private bool _movable;
public bool IsBreakable => _breakable;
public bool IsMergeable => _mergeable;
public bool IsMovable => _movable;
}
Ещё флаги можно использовать для оптимизаций, используя их вместо проверки существования компонента на объекте через GetComponent().
1) Для некоторых людей такое решение может показаться избыточным.
2) Платный.
Без флагов подобный функционал будет выглядеть чуть более объёмным и для внесения изменений потребуется больше телодвижений.
Ещё флаги можно использовать для оптимизаций, используя их вместо проверки существования компонента на объекте через GetComponent().