EnumFlagsField
示例程序 | |
---|---|
说明 | 生成一个下拉菜单,为枚举类型中每个值显示一个选项,可以单选、多选或不选 |
用法
只能用于 Unity 序列化系统支持的类型(sbyte
short
int
byte
ushort
或 uint
)组成的枚举类型。
该方法会自动生成名为 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 的下拉菜单如下: