Eonirr

Untitled

Nov 28th, 2025
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.60 KB | None | 0 0
  1. using UnityEngine;
  2.  
  3. public class ClipListAttribute : PropertyAttribute
  4. {
  5. }
  6.  
  7. --------------------------------
  8. --------------------------------
  9. using UnityEngine;
  10. using UnityEditor;
  11. using System.Reflection;
  12. using System.Collections.Generic;
  13.  
  14. [CustomEditor(typeof(AudioManager))]
  15. public class AudioManagerEditor : Editor
  16. {
  17. private bool showClips = true;
  18.  
  19. public override void OnInspectorGUI()
  20. {
  21. AudioManager am = (AudioManager)target;
  22.  
  23. DrawDefaultInspector();
  24.  
  25. GUILayout.Space(10);
  26.  
  27. showClips = EditorGUILayout.Foldout(showClips, "Audio Clips");
  28.  
  29. if (showClips)
  30. {
  31. FieldInfo[] fields = typeof(AudioManager).GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
  32. List<AudioClip> clips = new List<AudioClip>();
  33.  
  34. foreach (var field in fields)
  35. {
  36. if (field.FieldType == typeof(AudioClip) &&
  37. field.GetCustomAttribute(typeof(ClipListAttribute)) != null)
  38. {
  39. AudioClip current = (AudioClip)field.GetValue(am);
  40.  
  41. AudioClip newClip = (AudioClip)EditorGUILayout.ObjectField(field.Name, current, typeof(AudioClip), false);
  42.  
  43. if (newClip != current)
  44. {
  45. Undo.RecordObject(am, "Modify AudioClip");
  46. field.SetValue(am, newClip);
  47. EditorUtility.SetDirty(am);
  48. }
  49.  
  50. clips.Add(newClip);
  51. }
  52. }
  53. }
  54. }
  55. }
  56.  
Advertisement
Add Comment
Please, Sign In to add comment