You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
2.5 KiB
74 lines
2.5 KiB
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); |
|
} |
|
} |
|
}
|
|
|