1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- using UnityEngine;
- using UnityEngine.UI;
- using UnityEditorInternal;
- using UnityEditor.AnimatedValues;
-
- namespace UnityEditor.UI
- {
- [CustomEditor(typeof(HorizontalOrVerticalLayoutGroup), true)]
- [CanEditMultipleObjects]
- /// <summary>
- /// Custom Editor for the HorizontalOrVerticalLayoutGroupEditor Component.
- /// Extend this class to write a custom editor for a component derived from HorizontalOrVerticalLayoutGroupEditor.
- /// </summary>
- public class HorizontalOrVerticalLayoutGroupEditor : Editor
- {
- SerializedProperty m_Padding;
- SerializedProperty m_Spacing;
- SerializedProperty m_ChildAlignment;
- SerializedProperty m_ChildControlWidth;
- SerializedProperty m_ChildControlHeight;
- SerializedProperty m_ChildScaleWidth;
- SerializedProperty m_ChildScaleHeight;
- SerializedProperty m_ChildForceExpandWidth;
- SerializedProperty m_ChildForceExpandHeight;
- SerializedProperty m_ReverseArrangement;
-
- protected virtual void OnEnable()
- {
- m_Padding = serializedObject.FindProperty("m_Padding");
- m_Spacing = serializedObject.FindProperty("m_Spacing");
- m_ChildAlignment = serializedObject.FindProperty("m_ChildAlignment");
- m_ChildControlWidth = serializedObject.FindProperty("m_ChildControlWidth");
- m_ChildControlHeight = serializedObject.FindProperty("m_ChildControlHeight");
- m_ChildScaleWidth = serializedObject.FindProperty("m_ChildScaleWidth");
- m_ChildScaleHeight = serializedObject.FindProperty("m_ChildScaleHeight");
- m_ChildForceExpandWidth = serializedObject.FindProperty("m_ChildForceExpandWidth");
- m_ChildForceExpandHeight = serializedObject.FindProperty("m_ChildForceExpandHeight");
- m_ReverseArrangement = serializedObject.FindProperty("m_ReverseArrangement");
- }
-
- public override void OnInspectorGUI()
- {
- serializedObject.Update();
- EditorGUILayout.PropertyField(m_Padding, true);
- EditorGUILayout.PropertyField(m_Spacing, true);
- EditorGUILayout.PropertyField(m_ChildAlignment, true);
- EditorGUILayout.PropertyField(m_ReverseArrangement, true);
-
- Rect rect = EditorGUILayout.GetControlRect();
- rect = EditorGUI.PrefixLabel(rect, -1, EditorGUIUtility.TrTextContent("Control Child Size"));
- rect.width = Mathf.Max(50, (rect.width - 4) / 3);
- EditorGUIUtility.labelWidth = 50;
- ToggleLeft(rect, m_ChildControlWidth, EditorGUIUtility.TrTextContent("Width"));
- rect.x += rect.width + 2;
- ToggleLeft(rect, m_ChildControlHeight, EditorGUIUtility.TrTextContent("Height"));
- EditorGUIUtility.labelWidth = 0;
-
- rect = EditorGUILayout.GetControlRect();
- rect = EditorGUI.PrefixLabel(rect, -1, EditorGUIUtility.TrTextContent("Use Child Scale"));
- rect.width = Mathf.Max(50, (rect.width - 4) / 3);
- EditorGUIUtility.labelWidth = 50;
- ToggleLeft(rect, m_ChildScaleWidth, EditorGUIUtility.TrTextContent("Width"));
- rect.x += rect.width + 2;
- ToggleLeft(rect, m_ChildScaleHeight, EditorGUIUtility.TrTextContent("Height"));
- EditorGUIUtility.labelWidth = 0;
-
- rect = EditorGUILayout.GetControlRect();
- rect = EditorGUI.PrefixLabel(rect, -1, EditorGUIUtility.TrTextContent("Child Force Expand"));
- rect.width = Mathf.Max(50, (rect.width - 4) / 3);
- EditorGUIUtility.labelWidth = 50;
- ToggleLeft(rect, m_ChildForceExpandWidth, EditorGUIUtility.TrTextContent("Width"));
- rect.x += rect.width + 2;
- ToggleLeft(rect, m_ChildForceExpandHeight, EditorGUIUtility.TrTextContent("Height"));
- EditorGUIUtility.labelWidth = 0;
-
- serializedObject.ApplyModifiedProperties();
- }
-
- void ToggleLeft(Rect position, SerializedProperty property, GUIContent label)
- {
- bool toggle = property.boolValue;
- EditorGUI.BeginProperty(position, label, property);
- EditorGUI.BeginChangeCheck();
- int oldIndent = EditorGUI.indentLevel;
- EditorGUI.indentLevel = 0;
- toggle = EditorGUI.ToggleLeft(position, label, toggle);
- EditorGUI.indentLevel = oldIndent;
- if (EditorGUI.EndChangeCheck())
- {
- property.boolValue = property.hasMultipleDifferentValues ? true : !property.boolValue;
- }
- EditorGUI.EndProperty();
- }
- }
- }
|