Version: 2021.3
public static Enum EnumFlagsField (Enum enumValue, params GUILayoutOption[] options);
public static Enum EnumFlagsField (Enum enumValue, GUIStyle style, params GUILayoutOption[] options);
public static Enum EnumFlagsField (string label, Enum enumValue, params GUILayoutOption[] options);
public static Enum EnumFlagsField (string label, Enum enumValue, GUIStyle style, params GUILayoutOption[] options);
public static Enum EnumFlagsField (GUIContent label, Enum enumValue, params GUILayoutOption[] options);
public static Enum EnumFlagsField (GUIContent label, Enum enumValue, GUIStyle style, params GUILayoutOption[] options);
public static Enum EnumFlagsField (GUIContent label, Enum enumValue, bool includeObsolete, params GUILayoutOption[] options);
public static Enum EnumFlagsField (GUIContent label, Enum enumValue, bool includeObsolete, GUIStyle style, params GUILayoutOption[] options);

参数

label (可选)显示在枚举标志字段前的标签。
enumValue 枚举标志值。
style 可选 GUIStyle
options 一个可选的布局选项列表,用于指定额外的布局属性。此处传递的任何值都将覆盖 style 定义的设置。
另请参阅:GUILayout.WidthGUILayout.HeightGUILayout.MinWidthGUILayout.MaxWidthGUILayout.MinHeightGUILayout.MaxHeightGUILayout.ExpandWidthGUILayout.ExpandHeight
includeObsolete 设置为 true 将使 ObsoleteAttribute 附带枚举值。设置为 false 将使 ObsoleteAttribute 不附带枚举值。

返回

Enum 用户修改的枚举标志值。这是一个选择位掩码,其中每个位代表一个枚举值索引。(请注意,此返回值不是枚举本身。)

描述

单击后,系统会为枚举类型的每个值显示带有选项的菜单。

An option for the value 0 with name "Nothing" and an option for the value ~0 (that is, all bits set) with the name "Everything" are always displayed at the top of the menu. The names for the values 0 and ~0 can be overriden by defining these values in the enum type.

注意:此方法仅支持其基础类型(sbyte、short、int、byte、ushort 或 uint)受 Unity 的序列化系统支持的枚举。如果枚举由无符号类型提供支持,那么“Everything”选项应具有与所有已设置的位对应的值(即未选中的上下文中的 ~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<EnumFlagsFieldExample>().Show(); }

void OnGUI() { m_Flags = (ExampleFlagsEnum)EditorGUILayout.EnumFlagsField(m_Flags); } }