override public void OnInspectorGUI() { AudioLibraryClipPlayer player = (target as AudioLibraryClipPlayer); AudioLibrary library = player.Library; if (library != null) { List <string> names = new List <string>(); List <string> guids = new List <string>(); names.Add("Select..."); names.AddRange(library.Clips.Select(e => e.Name).Where(e => e != null)); guids.AddRange(library.Clips.Select(c => c.Guid).Where(c => c != null)); if (names.Count > 1) { int index = -1; index = guids.IndexOf(player.ClipGuid) + 1; int currentIndex = index; // if (index == 0) // if guid not found, fall back to name // { // index = names.IndexOf(player.ClipId); // } EditorGUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel("Clip ID"); index = EditorGUILayout.Popup(index, names.ToArray()); EditorGUILayout.EndHorizontal(); if (currentIndex != index) { Undo.RecordObject(player, "Change Audio Clip"); if (index > 0) { // player.ClipId = names[index]; player.ClipGuid = guids[index - 1]; } else { player.ClipGuid = null; } } } } else { EditorGUILayout.HelpBox("Set the Audio Library to an existing Audio Library instance.", MessageType.Error); } DrawDefaultInspector(); }
// Use this for initialization void Awake() { if (canvasGroup == null) { canvasGroup = GetComponentInParent <CanvasGroup>(); } if (canvasGroup != null) { Debug.LogFormat(this + ": using canvas group {0}", canvasGroup); } enabled = (canvasGroup != null); clipPlayer = GetComponent <AudioLibraryClipPlayer>(); }