UnityEditor.EditorUtility.DisplayPopupMenu C# (CSharp) Method

DisplayPopupMenu() public static method

Displays a popup menu.

public static DisplayPopupMenu ( Rect position, string menuItemPath, MenuCommand command ) : void
position UnityEngine.Rect
menuItemPath string
command MenuCommand
return void
        public static void DisplayPopupMenu(Rect position, string menuItemPath, MenuCommand command)
        {
            if (((menuItemPath == "CONTEXT") || (menuItemPath == "CONTEXT/")) || (menuItemPath == @"CONTEXT\"))
            {
                bool flag = false;
                if (command == null)
                {
                    flag = true;
                }
                if ((command != null) && (command.context == null))
                {
                    flag = true;
                }
                if (flag)
                {
                    Debug.LogError("DisplayPopupMenu: invalid arguments: using CONTEXT requires a valid MenuCommand object. If you want a custom context menu then try using the GenericMenu.");
                    return;
                }
            }
            Vector2 vector = GUIUtility.GUIToScreenPoint(new Vector2(position.x, position.y));
            position.x = vector.x;
            position.y = vector.y;
            Internal_DisplayPopupMenu(position, menuItemPath, (command != null) ? command.context : null, (command != null) ? command.userData : 0);
            ResetMouseDown();
        }

Usage Example

Exemplo n.º 1
0
        public static int ShowTerrainLayersSelectionHelper(Terrain terrain, int activeTerrainLayer)
        {
            GUILayout.Label(s_Styles.terrainLayers, EditorStyles.boldLabel);
            GUI.changed = false;
            int selectedTerrainLayer = activeTerrainLayer;

            if (terrain.terrainData.terrainLayers.Length > 0)
            {
                TerrainLayer[] layers           = terrain.terrainData.terrainLayers;
                var            layerGUIContents = new GUIContent[layers.Length];
                for (int i = 0; i < layers.Length; ++i)
                {
                    layerGUIContents[i] = new GUIContent
                    {
                        image   = (layers[i] == null || layers[i].diffuseTexture == null) ? EditorGUIUtility.whiteTexture : AssetPreview.GetAssetPreview(layers[i].diffuseTexture) ?? layers[i].diffuseTexture,
                        text    = layers[i] == null ? "Missing" : layers[i].name,
                        tooltip = layers[i] == null ? "Missing" : layers[i].name
                    };
                }
                selectedTerrainLayer = TerrainInspector.AspectSelectionGridImageAndText(activeTerrainLayer, layerGUIContents, 64, s_Styles.errNoLayersFound, out _);
            }
            else
            {
                selectedTerrainLayer = -1;
            }

            GUILayout.BeginHorizontal();
            GUILayout.FlexibleSpace();

            // menu button
            Rect r = GUILayoutUtility.GetRect(s_Styles.btnEditTerrainLayers, new GUIStyle("Button"));

            if (GUI.Button(r, s_Styles.btnEditTerrainLayers, new GUIStyle("Button")))
            {
                MenuCommand context = new MenuCommand(terrain, selectedTerrainLayer);
                EditorUtility.DisplayPopupMenu(new Rect(r.x, r.y, 0, 0), "CONTEXT /TerrainLayers", context);
            }
            GUILayout.EndHorizontal();

            return(selectedTerrainLayer);
        }
EditorUtility