暂无描述
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

AspectRatioFitterEditor.cs 2.5KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. using UnityEngine;
  2. using UnityEditor.AnimatedValues;
  3. using UnityEngine.UI;
  4. namespace UnityEditor.UI
  5. {
  6. [CustomEditor(typeof(AspectRatioFitter), true)]
  7. [CanEditMultipleObjects]
  8. /// <summary>
  9. /// Custom Editor for the AspectRatioFitter component.
  10. /// Extend this class to write a custom editor for a component derived from AspectRatioFitter.
  11. /// </summary>
  12. public class AspectRatioFitterEditor : SelfControllerEditor
  13. {
  14. SerializedProperty m_AspectMode;
  15. SerializedProperty m_AspectRatio;
  16. AnimBool m_ModeBool;
  17. private AspectRatioFitter aspectRatioFitter;
  18. protected virtual void OnEnable()
  19. {
  20. m_AspectMode = serializedObject.FindProperty("m_AspectMode");
  21. m_AspectRatio = serializedObject.FindProperty("m_AspectRatio");
  22. aspectRatioFitter = target as AspectRatioFitter;
  23. m_ModeBool = new AnimBool(m_AspectMode.intValue != 0);
  24. m_ModeBool.valueChanged.AddListener(Repaint);
  25. }
  26. public override void OnInspectorGUI()
  27. {
  28. serializedObject.Update();
  29. EditorGUILayout.PropertyField(m_AspectMode);
  30. m_ModeBool.target = m_AspectMode.intValue != 0;
  31. if (EditorGUILayout.BeginFadeGroup(m_ModeBool.faded))
  32. EditorGUILayout.PropertyField(m_AspectRatio);
  33. EditorGUILayout.EndFadeGroup();
  34. serializedObject.ApplyModifiedProperties();
  35. if (aspectRatioFitter)
  36. {
  37. if (!aspectRatioFitter.IsAspectModeValid())
  38. ShowNoParentWarning();
  39. if (!aspectRatioFitter.IsComponentValidOnObject())
  40. ShowCanvasRenderModeInvalidWarning();
  41. }
  42. base.OnInspectorGUI();
  43. }
  44. protected virtual void OnDisable()
  45. {
  46. aspectRatioFitter = null;
  47. m_ModeBool.valueChanged.RemoveListener(Repaint);
  48. }
  49. private static void ShowNoParentWarning()
  50. {
  51. var text = L10n.Tr("You cannot use this Aspect Mode because this Component's GameObject does not have a parent object.");
  52. EditorGUILayout.HelpBox(text, MessageType.Warning, true);
  53. }
  54. private static void ShowCanvasRenderModeInvalidWarning()
  55. {
  56. var text = L10n.Tr("You cannot use this Aspect Mode because this Component is attached to a Canvas with a fixed width and height.");
  57. EditorGUILayout.HelpBox(text, MessageType.Warning, true);
  58. }
  59. }
  60. }