UnityGame/Library/PackageCache/com.unity.ugui/Editor/UGUI/UI/AspectRatioFitterEditor.cs
2024-10-27 10:53:47 +03:00

75 lines
2.5 KiB
C#

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);
}
}
}