/// <summary> /// 播放世界音效 /// </summary> /// <param name="attachTarget">附加目标</param> /// <param name="clip">音乐剪辑</param> /// <param name="isLoop">是否循环</param> /// <param name="speed">播放速度</param> public void PlayWorldSound(GameObject attachTarget, AudioClip clip, bool isLoop = false, float speed = 1) { if (attachTarget == null || clip == null) { return; } if (WorldSources.ContainsKey(attachTarget)) { AudioSource audio = WorldSources[attachTarget]; audio.DOKill(); if (audio.isPlaying) { audio.Stop(); } audio.clip = clip; audio.loop = isLoop; audio.pitch = speed; audio.volume = WorldVolume; audio.Play(); } else { AudioSource audio = AudioToolkit.AttachAudioSource(attachTarget, WorldPriority, WorldVolume, 1, 1, Mute); WorldSources.Add(attachTarget, audio); audio.clip = clip; audio.loop = isLoop; audio.pitch = speed; audio.Play(); } }
/// <summary> /// 初始化助手 /// </summary> public void OnInitialization() { BackgroundSource = AudioToolkit.CreateAudioSource("BackgroundSource", Module.transform); SingleSource = AudioToolkit.CreateAudioSource("SingleSource", Module.transform); OneShootSource = AudioToolkit.CreateAudioSource("OneShootSource", Module.transform); BackgroundSource.loop = true; }
//提取闲置中的多通道音源 private AudioSource ExtractIdleMultipleAudioSource() { for (int i = 0; i < MultipleAudios.Count; i++) { if (!MultipleAudios[i].isPlaying) { return(MultipleAudios[i]); } } AudioSource audio = AudioToolkit.CreateAudioSource("MultipleAudio", MultiplePriority, MultipleVolume, 1, 0, Mute, Module.transform); MultipleAudios.Add(audio); return(audio); }
internal override void OnInitialization() { base.OnInitialization(); _helper = Helper as IAudioHelper; _helper.BackgroundAudio = AudioToolkit.CreateAudioSource("BackgroundAudio", BackgroundPriorityDefault, BackgroundVolumeDefault, 1, 0, MuteDefault, transform); _helper.SingleAudio = AudioToolkit.CreateAudioSource("SingleAudio", SinglePriorityDefault, SingleVolumeDefault, 1, 0, MuteDefault, transform); Mute = MuteDefault; BackgroundPriority = BackgroundPriorityDefault; SinglePriority = SinglePriorityDefault; MultiplePriority = MultiplePriorityDefault; WorldPriority = WorldPriorityDefault; BackgroundVolume = BackgroundVolumeDefault; SingleVolume = SingleVolumeDefault; MultipleVolume = MultipleVolumeDefault; WorldVolume = WorldVolumeDefault; }
/// <summary> /// 播放世界音效 /// </summary> /// <param name="attachTarget">附加目标</param> /// <param name="clip">音乐剪辑</param> public void PlayWorldSound(GameObject attachTarget, AudioClip clip) { if (WorldSources.ContainsKey(attachTarget)) { AudioSource audio = WorldSources[attachTarget]; if (audio.isPlaying) { audio.Stop(); } audio.clip = clip; audio.Play(); } else { AudioSource audio = AudioToolkit.AttachAudioSource(attachTarget, WorldPriority, WorldVolume, 1, 1, Mute); WorldSources.Add(attachTarget, audio); audio.clip = clip; audio.Play(); } }