EnumFlagsField

示例程序
说明生成一个下拉菜单,为枚举类型中每个值显示一个选项,可以单选、多选或不选

用法

只能用于 Unity 序列化系统支持的类型(sbyte short int byte ushortuint)组成的枚举类型。

该方法会自动生成名为 Nothing 、值为 0 的选项和名为 Everything 、值为 ~0 (即所有位都设置)的选项,且始终显示在菜单的顶部。 可以通过在枚举类型中定义这些值来覆盖其名称。对于由无符号类型支持的枚举, Everything 对应的值应该是,在 unchecked 环境下所有位均设置的值,或者是该类型可以表示的的最大值,即 MaxValue 常量。

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);

参数

label

对应的标签名称。

enumValue

该区域控制的枚举型变量。

style

(可选)由 GUIStyle 类型定义的 GUI 样式。

options

(可选)用于指定额外的布局属性,该参数将覆盖默认样式。

示例

public override void OnInspectorGUI () {

		// GUI style
		GUIStyle style = new GUIStyle ();
		style.fontSize = 30;
		style.normal.background = Texture2D.whiteTexture;
		style.normal.textColor = Color.red;
		style.margin = new RectOffset (0, 0, 3, 3);
		style.padding = new RectOffset (10, 10, 10, 10);
		style.alignment = TextAnchor.MiddleLeft;
	
		// default name flags
		_target.Flags = (EnumFlagsField.EnumFlags)EditorGUILayout.EnumFlagsField ("Flags", _target.Flags);
	
		// custom name flags
		_target.CustomFlags = (EnumFlagsField.CustomEnumFlags)EditorGUILayout.EnumFlagsField (
				"Custom Flags",
				_target.CustomFlags,
				style,
				GUILayout.Height (50)
		);
}

编译结果如下:

其中 Custom Flags 的下拉菜单如下: