1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- using UnityEngine;
- using UnityEditor.AnimatedValues;
- using UnityEngine.UI;
-
- namespace UnityEditor.UI
- {
- [CustomEditor(typeof(AspectRatioFitter), true)]
- [CanEditMultipleObjects]
- /// <summary>
- /// Custom Editor for the AspectRatioFitter component.
- /// Extend this class to write a custom editor for a component derived from AspectRatioFitter.
- /// </summary>
- public class AspectRatioFitterEditor : SelfControllerEditor
- {
- SerializedProperty m_AspectMode;
- SerializedProperty m_AspectRatio;
-
-
- AnimBool m_ModeBool;
- private AspectRatioFitter aspectRatioFitter;
-
- protected virtual void OnEnable()
- {
- m_AspectMode = serializedObject.FindProperty("m_AspectMode");
- m_AspectRatio = serializedObject.FindProperty("m_AspectRatio");
- aspectRatioFitter = target as AspectRatioFitter;
-
- m_ModeBool = new AnimBool(m_AspectMode.intValue != 0);
- m_ModeBool.valueChanged.AddListener(Repaint);
- }
-
- public override void OnInspectorGUI()
- {
- serializedObject.Update();
- EditorGUILayout.PropertyField(m_AspectMode);
-
- m_ModeBool.target = m_AspectMode.intValue != 0;
-
- if (EditorGUILayout.BeginFadeGroup(m_ModeBool.faded))
- EditorGUILayout.PropertyField(m_AspectRatio);
- EditorGUILayout.EndFadeGroup();
-
- serializedObject.ApplyModifiedProperties();
-
- if (aspectRatioFitter)
- {
- if (!aspectRatioFitter.IsAspectModeValid())
- ShowNoParentWarning();
- if (!aspectRatioFitter.IsComponentValidOnObject())
- ShowCanvasRenderModeInvalidWarning();
- }
-
- base.OnInspectorGUI();
- }
-
- protected virtual void OnDisable()
- {
- aspectRatioFitter = null;
- m_ModeBool.valueChanged.RemoveListener(Repaint);
- }
-
- private static void ShowNoParentWarning()
- {
- var text = L10n.Tr("You cannot use this Aspect Mode because this Component's GameObject does not have a parent object.");
- EditorGUILayout.HelpBox(text, MessageType.Warning, true);
- }
-
- private static void ShowCanvasRenderModeInvalidWarning()
- {
- var text = L10n.Tr("You cannot use this Aspect Mode because this Component is attached to a Canvas with a fixed width and height.");
- EditorGUILayout.HelpBox(text, MessageType.Warning, true);
- }
- }
- }
|