SoundComponentInspector.cs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. //------------------------------------------------------------
  2. // Game Framework
  3. // Copyright © 2013-2021 loyalsoft. All rights reserved.
  4. // Homepage: http://www.game7000.com/
  5. // Feedback: http://www.game7000.com/
  6. //------------------------------------------------------------
  7. using UnityEditor;
  8. using UnityGameFramework.Runtime;
  9. namespace UnityGameFramework.Editor
  10. {
  11. [CustomEditor(typeof(SoundComponent))]
  12. internal sealed class SoundComponentInspector : GameFrameworkInspector
  13. {
  14. private SerializedProperty m_EnablePlaySoundUpdateEvent = null;
  15. private SerializedProperty m_EnablePlaySoundDependencyAssetEvent = null;
  16. private SerializedProperty m_InstanceRoot = null;
  17. private SerializedProperty m_AudioMixer = null;
  18. private SerializedProperty m_SoundGroups = null;
  19. private HelperInfo<SoundHelperBase> m_SoundHelperInfo = new HelperInfo<SoundHelperBase>("Sound");
  20. private HelperInfo<SoundGroupHelperBase> m_SoundGroupHelperInfo = new HelperInfo<SoundGroupHelperBase>("SoundGroup");
  21. private HelperInfo<SoundAgentHelperBase> m_SoundAgentHelperInfo = new HelperInfo<SoundAgentHelperBase>("SoundAgent");
  22. public override void OnInspectorGUI()
  23. {
  24. base.OnInspectorGUI();
  25. serializedObject.Update();
  26. SoundComponent t = (SoundComponent)target;
  27. EditorGUI.BeginDisabledGroup(EditorApplication.isPlayingOrWillChangePlaymode);
  28. {
  29. EditorGUILayout.PropertyField(m_EnablePlaySoundUpdateEvent);
  30. EditorGUILayout.PropertyField(m_EnablePlaySoundDependencyAssetEvent);
  31. EditorGUILayout.PropertyField(m_InstanceRoot);
  32. EditorGUILayout.PropertyField(m_AudioMixer);
  33. m_SoundHelperInfo.Draw();
  34. m_SoundGroupHelperInfo.Draw();
  35. m_SoundAgentHelperInfo.Draw();
  36. EditorGUILayout.PropertyField(m_SoundGroups, true);
  37. }
  38. EditorGUI.EndDisabledGroup();
  39. if (EditorApplication.isPlaying && IsPrefabInHierarchy(t.gameObject))
  40. {
  41. EditorGUILayout.LabelField("Sound Group Count", t.SoundGroupCount.ToString());
  42. }
  43. serializedObject.ApplyModifiedProperties();
  44. Repaint();
  45. }
  46. protected override void OnCompileComplete()
  47. {
  48. base.OnCompileComplete();
  49. RefreshTypeNames();
  50. }
  51. private void OnEnable()
  52. {
  53. m_EnablePlaySoundUpdateEvent = serializedObject.FindProperty("m_EnablePlaySoundUpdateEvent");
  54. m_EnablePlaySoundDependencyAssetEvent = serializedObject.FindProperty("m_EnablePlaySoundDependencyAssetEvent");
  55. m_InstanceRoot = serializedObject.FindProperty("m_InstanceRoot");
  56. m_AudioMixer = serializedObject.FindProperty("m_AudioMixer");
  57. m_SoundGroups = serializedObject.FindProperty("m_SoundGroups");
  58. m_SoundHelperInfo.Init(serializedObject);
  59. m_SoundGroupHelperInfo.Init(serializedObject);
  60. m_SoundAgentHelperInfo.Init(serializedObject);
  61. RefreshTypeNames();
  62. }
  63. private void RefreshTypeNames()
  64. {
  65. m_SoundHelperInfo.Refresh();
  66. m_SoundGroupHelperInfo.Refresh();
  67. m_SoundAgentHelperInfo.Refresh();
  68. serializedObject.ApplyModifiedProperties();
  69. }
  70. }
  71. }