You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
2.7 KiB
86 lines
2.7 KiB
using UnityEngine;
|
|
using UnityEditor;
|
|
using System.Collections.Generic;
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Copyright 2012-2016 RenderHeads Ltd. All rights reserved.
|
|
//-----------------------------------------------------------------------------
|
|
|
|
[CustomEditor(typeof(AudioManager))]
|
|
public class AudioManagerEditor : Editor
|
|
{
|
|
private AudioManager _manager;
|
|
//private AudioSource[] _audios;
|
|
private List<AudioSource> audioPool = new List<AudioSource>();
|
|
private List<AudioSource> others = new List<AudioSource>();
|
|
private List<AudioSource> effectAudio = new List<AudioSource>();
|
|
|
|
private void UpdateMovies()
|
|
{
|
|
AudioSource[] audios = (AudioSource[])FindObjectsOfType(typeof(AudioSource));
|
|
audioPool.Clear();
|
|
effectAudio.Clear();
|
|
others.Clear();
|
|
foreach (AudioSource audio in audios)
|
|
{
|
|
if(audio.transform.parent == AudioManager.Instance.effectAudioPool)
|
|
{
|
|
}
|
|
else if(audio.transform.parent == AudioManager.Instance.audioPool)
|
|
{
|
|
audioPool.Add(audio);
|
|
}
|
|
else if (audio.transform.parent == AudioManager.Instance.effectAudio)
|
|
{
|
|
effectAudio.Add(audio);
|
|
}
|
|
else
|
|
{
|
|
others.Add(audio);
|
|
}
|
|
}
|
|
}
|
|
|
|
public override bool RequiresConstantRepaint()
|
|
{
|
|
return true;
|
|
}
|
|
private void DrawUI(List<AudioSource> audios, bool showLoop = true)
|
|
{
|
|
foreach (AudioSource audio in audios)
|
|
{
|
|
GUILayout.BeginHorizontal();
|
|
{
|
|
if (GUILayout.Button(audio.name))
|
|
Selection.activeObject = audio;
|
|
}
|
|
GUILayout.EndHorizontal();
|
|
GUILayout.BeginHorizontal();
|
|
{
|
|
if (showLoop)
|
|
audio.loop = GUILayout.Toggle(audio.loop, "loop", GUILayout.ExpandWidth(false));
|
|
if(audio!=null&& audio.clip!=null)
|
|
GUILayout.HorizontalSlider(audio.time, 0f, audio.clip.length, GUILayout.MinWidth(128f), GUILayout.ExpandWidth(true));
|
|
}
|
|
GUILayout.EndHorizontal();
|
|
}
|
|
}
|
|
public override void OnInspectorGUI()
|
|
{
|
|
DrawDefaultInspector();
|
|
|
|
|
|
_manager = (this.target) as AudioManager;
|
|
UpdateMovies();
|
|
GUI.color = Color.white;
|
|
DrawUI(audioPool);
|
|
GUI.color = Color.red;
|
|
DrawUI(others);
|
|
GUI.color = Color.grey;
|
|
DrawUI(effectAudio);
|
|
if (GUI.changed)
|
|
{
|
|
EditorUtility.SetDirty(_manager);
|
|
}
|
|
}
|
|
} |