position | 用于该字段的屏幕上的矩形。 |
label | 该字段前面的可选标签。 |
selected | 该字段显示的枚举选项。 |
style | 可选的 GUIStyle。 |
includeObsolete | 设置为 true 以包含具有 ObsoleteAttribute 的枚举值。设置为 false 以排除具有 ObsoleteAttribute 的枚举值。 |
checkEnabled | 针对每个显示的枚举值调用的方法。指定的方法应在选项可选择时返回 true,否则返回 false。 |
Enum 用户选择的枚举选项。
创建一个枚举弹出选择字段。
以当前选择的枚举值作为参数,并返回用户选择的枚举值。
编辑器窗口中的枚举弹出窗口。
using UnityEditor; using UnityEngine;
// Shows info of a GameObject depending on the selected option
public enum OPTIONS { Position = 0, Rotation = 1, Scale = 2, }
public class EditorGUIEnumPopup : EditorWindow { OPTIONS display = OPTIONS.Position;
[MenuItem("Examples/Editor GUI Enum Popup usage")] static void Init() { EditorWindow window = GetWindow(typeof(EditorGUIEnumPopup)); window.position = new Rect(0, 0, 220, 80); window.Show(); }
void OnGUI() { Transform selectedObj = Selection.activeTransform;
display = (OPTIONS)EditorGUI.EnumPopup( new Rect(3, 3, position.width - 6, 15), "Show:", display);
EditorGUI.LabelField(new Rect(0, 20, position.width, 15), "Name:", selectedObj ? selectedObj.name : "Select an Object"); if (selectedObj) { switch (display) { case OPTIONS.Position: EditorGUI.LabelField(new Rect(0, 40, position.width, 15), "Position:", selectedObj.position.ToString()); break;
case OPTIONS.Rotation: EditorGUI.LabelField(new Rect(0, 40, position.width, 15), "Rotation:", selectedObj.rotation.ToString()); break;
case OPTIONS.Scale: EditorGUI.LabelField(new Rect(0, 40, position.width, 15), "Scale:", selectedObj.localScale.ToString()); break;
default: Debug.LogError("Unrecognized Option"); break; } }
if (GUI.Button(new Rect(3, position.height - 25, position.width - 6, 24), "Close")) this.Close(); } }