版本: Unity 6 (6000.0)
语言英语
  • C#

EditorGUI.Popup

建议修改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法采纳所有提交内容,但我们会阅读用户提出的每项修改建议,并在适用情况下进行更新。

关闭

提交失败

由于某些原因,您的修改建议无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

public static int Popup(Rect position, int selectedIndex, string[] displayedOptions, GUIStyle style = EditorStyles.popup);

声明

public static int Popup(Rect position, int selectedIndex, GUIContent[] displayedOptions, GUIStyle style = EditorStyles.popup);

声明

public static int Popup(Rect position, string label, int selectedIndex, string[] displayedOptions, GUIStyle style = EditorStyles.popup);

声明

public static int Popup(Rect position, GUIContent label, int selectedIndex, GUIContent[] displayedOptions, GUIStyle style = EditorStyles.popup);

参数

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 列出了一个选项数组。当这些元素包含“/”(斜杠字符)时,这些元素用于子菜单。斜杠左侧的文本决定了结构。