示例#1
0
 void CreateHierarchy()
 {
                 #if UNITY_EDITOR
     foreach (AudioClip audioClip in audioClips)
     {
         string     audioClipPath      = UnityEditor.AssetDatabase.GetAssetPath(audioClip).TrimStart(("Assets/Resources/" + audioClipsPath).ToCharArray());
         string     audioClipDirectory = Path.GetDirectoryName(audioClipPath);
         GameObject parent             = GetOrAddFolder(audioClipDirectory);
         GameObject child = audioPlayer.gameObject.FindChildRecursive(audioClip.name);
         if (child == null)
         {
             child = new GameObject(audioClip.name);
             AudioOptions options = child.GetOrAddComponent <AudioOptions>();
             AudioSource  source  = options.GetOrAddComponent <AudioSource>();
             source.playOnAwake       = false;
             source.clip              = audioClip;
             options.audioInfo        = new AudioInfo(source, options, audioPlayer);
             options.hierarchyManager = this;
             options.audioPlayer      = audioPlayer;
         }
         child.transform.parent = parent.transform;
         child.transform.Reset();
     }
                 #endif
 }
        public override void OnHierarchyWindowItemGUI(int instanceid, Rect selectionrect)
        {
                        #if UNITY_EDITOR
            Texture    icon       = UnityEditor.EditorGUIUtility.ObjectContent(null, typeof(AudioSource)).image;
            GameObject gameObject = UnityEditor.EditorUtility.InstanceIDToObject(instanceid) as GameObject;

            if (gameObject == null || icon == null)
            {
                return;
            }

            float width = selectionrect.width;
            selectionrect.width  = 30;
            selectionrect.height = 16;

            AudioOptions audioOptions = gameObject.GetComponent <AudioOptions>();
            if (audioOptions == null || audioOptions.audioInfo == null)
            {
                return;
            }

            AudioInfo audioInfo = audioOptions.audioInfo;
            selectionrect.x       = width - 3 + gameObject.GetHierarchyDepth() * 14;
            selectionrect.height += 1;
            GUIStyle style = new GUIStyle("MiniToolbarButtonLeft");
            style.fixedHeight  += 1;
            style.contentOffset = new Vector2(-4, 0);
            style.clipping      = TextClipping.Overflow;

            if (GUI.Button(selectionrect, icon, style))
            {
                UnityEditor.Selection.activeObject = gameObject;

                if (previewAudioSource != null)
                {
                    previewAudioSource.gameObject.Remove();
                }

                previewAudioSource = audioInfo.Source.PlayOnListener();
                if (previewAudioSource != null)
                {
                    audioInfo.audioPlayer.itemManager.SetAudioSource(previewAudioSource, audioInfo);
                    routine = DestroyAfterPlaying(previewAudioSource);
                }
            }
            else if (Event.current.isMouse && Event.current.type == EventType.mouseDown)
            {
                if (previewAudioSource != null)
                {
                    previewAudioSource.gameObject.Remove();
                }
                routine = null;
            }
                        #endif
        }
示例#3
0
 public AudioInfo(float fadeIn, AnimationCurve fadeInCurve, float fadeOut, AnimationCurve fadeOutCurve, float randomVolume, float randomPitch, bool doNotKill, AudioSource source, AudioOptions audioOptions, AudioPlayer audioPlayer)
 {
     this.fadeIn       = fadeIn;
     this.fadeInCurve  = fadeInCurve;
     this.fadeOut      = fadeOut;
     this.fadeOutCurve = fadeOutCurve;
     this.randomVolume = randomVolume;
     this.randomPitch  = randomPitch;
     this.doNotKill    = doNotKill;
     this.source       = source;
     this.audioOptions = audioOptions;
     this.audioPlayer  = audioPlayer;
 }
示例#4
0
        public override void OnInspectorGUI()
        {
            audioOptions      = (Magicolo.AudioTools.AudioOptions)target;
            audioInfo         = audioOptions.audioInfo;
            audioInfoProperty = serializedObject.FindProperty("audioInfo");
            clip = audioOptions.Source.clip;

            Begin();

            ShowFadeIn();
            ShowFadeInCurve();
            ShowFadeOut();
            ShowFadeOutCurve();
            EditorGUILayout.PropertyField(audioInfoProperty.FindPropertyRelative("randomVolume"));
            EditorGUILayout.PropertyField(audioInfoProperty.FindPropertyRelative("randomPitch"));
            EditorGUILayout.PropertyField(audioInfoProperty.FindPropertyRelative("doNotKill"));
            ShowClipInfo();

            End();
        }
示例#5
0
 public AudioInfo(AudioSource source, AudioOptions audioOptions, AudioPlayer audioPlayer)
 {
     this.source       = source;
     this.audioOptions = audioOptions;
     this.audioPlayer  = audioPlayer;
 }