position | 屏幕上用于该字段的矩形。 |
label | 字段前面的可选标签。 |
selectedIndex | 字段显示的选项的索引。 |
displayedOptions | 包含弹出窗口中显示的选项的数组。 |
style | 可选的 GUIStyle。 |
int 用户选择的选项的索引。
创建一个通用的弹出选择字段。
将当前选定的索引作为参数,并返回用户选择的索引。
在编辑器窗口中弹出。
using UnityEngine; using UnityEditor;
// Adds a component to the selected GameObjects
class EditorGUIPopup : EditorWindow { string[] options = { "Rigidbody", "Box Collider", "Sphere Collider" }; int index = 0;
[MenuItem("Examples/Editor GUI Popup usage")] static void Init() { var window = GetWindow<EditorGUIPopup>(); window.position = new Rect(0, 0, 180, 80); window.Show(); }
void OnGUI() { index = EditorGUI.Popup( new Rect(0, 0, position.width, 20), "Component:", index, options);
if (GUI.Button(new Rect(0, 25, position.width, position.height - 26), "Add Component")) AddComponentToObjects(); }
void AddComponentToObjects() { if (!Selection.activeGameObject) { Debug.LogError("Please select at least one GameObject first"); return; }
foreach (GameObject obj in Selection.gameObjects) { switch (index) { case 0: obj.AddComponent<Rigidbody>(); break;
case 1: obj.AddComponent<BoxCollider>(); break;
case 2: obj.AddComponent<SphereCollider>(); break; } } } }
注意:displayedOptions
列出了一个选项数组。当这些元素包含“/”(斜杠字符)时,这些元素用于子菜单。斜杠左侧的文本决定了结构。