コード例 #1
0
 private static void OnGUI_DrawPopOutButton(Rect position, Object popoutReference)
 {
     if (popoutReference != null)
     {
         var buttonRect = new Rect(position.x - position.height, position.y, position.height, position.height);
         if (GUI.Button(buttonRect, "", "OL Plus"))
         {
             var windowRect = new Rect(GUIUtility.GUIToScreenPoint(position.position), new Vector2(400, 500));
             PopupEditorWindow.Create(popoutReference, windowRect);
         }
     }
 }
コード例 #2
0
 public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
 {
     if (property.objectReferenceValue != null && !property.hasMultipleDifferentValues)
     {
         var buttonRect = new Rect(position.x + (EditorGUI.indentLevel - 1) * position.height + 2, position.y, position.height - 4, position.height);
         if (GUI.Button(buttonRect, "", "OL Plus"))
         {
             var windowRect = new Rect(GUIUtility.GUIToScreenPoint(position.position), new Vector2(500, 500));
             PopupEditorWindow.Create(property.objectReferenceValue, windowRect);
         }
     }
     EditorGUI.PropertyField(position, property, label);
 }
コード例 #3
0
    public override void OnGUI(Rect position, UnityEditor.SerializedProperty property, GUIContent label)
    {
        var foldoutRect = new Rect(position.position.x - HEADER_HEIGHT + 3 + EditorGUI.indentLevel * 15, position.position.y, HEADER_HEIGHT, HEADER_HEIGHT - 4);

        EditorGUI.BeginChangeCheck();
        bool foldout = window != null;

        if (!foldout)
        {
            if (property.objectReferenceValue == null || property.hasMultipleDifferentValues)
            {
                foldout = false;
            }
            else
            {
                foldout = GUI.Button(foldoutRect, "", "OL Plus");
            }
        }

        var objFieldRect = new Rect(position.x, position.y, position.width, HEADER_HEIGHT);

        EditorGUI.ObjectField(objFieldRect, property, label);

        if (foldout)
        {
            var rect = new Rect(new Vector2(position.position.x, position.position.y + HEADER_HEIGHT), new Vector2(position.width, EDITOR_HEIGHT));
            //Debug.Log(rect.ToString());
            rect.position = EditorGUIUtility.GUIToScreenPoint(rect.position);

            if (window == null)
            {
                window = PopupEditorWindow.Create(property.objectReferenceValue, position, new Vector2(position.width, EDITOR_HEIGHT));
            }

            if (window)
            {
                window.position = rect;
            }
        }
        else
        {
            if (window)
            {
                window.Close();
                window = null;
            }
        }
    }