AroundSphereMoveEditor.cs 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using System.Reflection;
  4. using UnityEngine;
  5. using UnityEditor;
  6. [CustomEditor(typeof(AroundSphereMove))]
  7. public class AroundSphereMoveEditor : Editor
  8. {
  9. private SerializedProperty m_ShakeDir;
  10. private SerializedProperty m_ShakeSpeed;
  11. private SerializedProperty m_MoveRadius;
  12. private SerializedProperty m_MoveAngleSpeed;
  13. private SerializedProperty m_SelfRotateSpeed;
  14. private SerializedProperty m_OffsetAngle;
  15. private SerializedProperty m_SelfScale;
  16. private SerializedProperty m_SelfHeight;
  17. private FieldInfo m_NeedResetFieldInfo;
  18. void OnEnable()
  19. {
  20. m_ShakeDir = serializedObject.FindProperty("m_ShakeDir");
  21. m_ShakeSpeed = serializedObject.FindProperty("m_ShakeSpeed");
  22. m_MoveRadius = serializedObject.FindProperty("m_MoveRadius");
  23. m_MoveAngleSpeed = serializedObject.FindProperty("m_MoveAngleSpeed");
  24. m_SelfRotateSpeed = serializedObject.FindProperty("m_SelfRotateSpeed");
  25. m_OffsetAngle = serializedObject.FindProperty("m_OffsetAngle");
  26. m_SelfScale = serializedObject.FindProperty("m_SelfScale");
  27. m_SelfHeight = serializedObject.FindProperty("m_SelfHeight");
  28. m_NeedResetFieldInfo = typeof(AroundSphereMove).GetField("m_NeedReset", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static);
  29. }
  30. public override void OnInspectorGUI()
  31. {
  32. serializedObject.Update();
  33. bool changed = false;
  34. EditorGUILayout.PropertyField(m_ShakeDir, EditorGUIUtility.TrTextContent("抖动方向"));
  35. EditorGUILayout.PropertyField(m_ShakeSpeed, EditorGUIUtility.TrTextContent("抖动速度"));
  36. EditorGUI.BeginChangeCheck();
  37. EditorGUILayout.PropertyField(m_MoveRadius, EditorGUIUtility.TrTextContent("绕圈半径"));
  38. changed = EditorGUI.EndChangeCheck() || changed;
  39. EditorGUILayout.PropertyField(m_MoveAngleSpeed, EditorGUIUtility.TrTextContent("绕圈速度"));
  40. EditorGUI.BeginChangeCheck();
  41. EditorGUILayout.PropertyField(m_SelfRotateSpeed, EditorGUIUtility.TrTextContent("自转速度"));
  42. changed = EditorGUI.EndChangeCheck() || changed;
  43. EditorGUI.BeginChangeCheck();
  44. m_OffsetAngle.quaternionValue = Quaternion.Euler(EditorGUILayout.Vector3Field(EditorGUIUtility.TrTextContent("初始角度"), m_OffsetAngle.quaternionValue.eulerAngles));
  45. changed = EditorGUI.EndChangeCheck() || changed;
  46. EditorGUI.BeginChangeCheck();
  47. EditorGUILayout.PropertyField(m_SelfScale, EditorGUIUtility.TrTextContent("自身缩放"));
  48. changed = EditorGUI.EndChangeCheck() || changed;
  49. EditorGUILayout.PropertyField(m_SelfHeight, EditorGUIUtility.TrTextContent("初始偏移高度"));
  50. serializedObject.ApplyModifiedProperties();
  51. if (changed)
  52. {
  53. foreach(var item in targets)
  54. {
  55. m_NeedResetFieldInfo.SetValue(item, true);
  56. }
  57. }
  58. }
  59. }