Объявление
public static Enum EnumFlagsField(Rect position, Enum enumValue);public static Enum EnumFlagsField(Rect position, Enum enumValue, GUIStyle style);
public static Enum EnumFlagsField(Rect position, string label, Enum enumValue);
public static Enum EnumFlagsField(Rect position, string label, Enum enumValue, GUIStyle style);
public static Enum EnumFlagsField(Rect position, GUIContent label, Enum enumValue);
public static Enum EnumFlagsField(Rect position, GUIContent label, Enum enumValue, GUIStyle style);
public static Enum EnumFlagsField(Rect position, GUIContent label, Enum enumValue, bool includeObsolete = false, GUIStyle style = null);
Параметры
position | Прямоугольник на экране для использования в качестве поля enum flags. |
label | Необязательная метка для отображения перед полем флагов перечисления. |
enumValue | Значение флагов перечисления (поддерживает значения перечисления только для типов перечисления с int в качестве базового типа). |
style | Optional GUIStyle. |
includeObsolete | Установите значение true, чтобы включить значения Enum с ObsoleteAttribute. Установите значение false, чтобы исключить значения Enum с ObsoleteAttribute. |
Возвращает
Enum Значение флагов перечисления изменено пользователем. Это битовая маска выбора, где каждый бит представляет индекс значения Enum. (Обратите внимание, что это возвращаемое значение само по себе не является Enum).
Описание
Отображает меню с параметрами для каждого значения перечислимого типа при нажатии. Параметр для значения 0
с именем "Ничего" и вариант для значения ~0
(то есть все биты установлены ) с названием «Все» всегда отображаются в верхней части меню. Имена значений 0
и ~0
можно переопределить, определив эти значения в типе перечисления.
Примечание. Этот метод поддерживает только перечисления, базовые типы которых поддерживаются системой сериализации Unity (sbyte, short, int, byte, ushort или uint). Для перечислений, поддерживаемых беззнаковым типом, параметру «Все» должно быть присвоено значение, соответствующее всем установленным битам (т. е. ~0
в непроверяемом контексте или MaxValue
константа для типа).

using UnityEditor;
using UnityEngine;
class EnumFlagsFieldExample : EditorWindow
{
enum ExampleFlagsEnum
{
None = 0, // Custom name for "Nothing" option
A = 1 << 0,
B = 1 << 1,
AB = A | B, // Combination of two flags
C = 1 << 2,
All = ~0, // Custom name for "Everything" option
}
ExampleFlagsEnum m_Flags;
[MenuItem("Examples/EnumFlagsField Example")]
static void OpenWindow()
{
GetWindow().Show();
}
void OnGUI()
{
m_Flags = (ExampleFlagsEnum)EditorGUI.EnumFlagsField(new Rect(5, 5, 300, 20), m_Flags);
}
}