1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- using Animancer;
- using ET;
- using ET.Client;
- using ET.EventType;
- using Mono;
- using System.Text.RegularExpressions;
- using UnityEngine;
- [Event(SceneType.None)]
- public class PlayBGMHandler : BEvent<ET.EventType.PlayBgm>
- {
- public override void OnEvent(PlayBgm args)
- {
- if (args.Play)
- {
- SoundManager.Instance.PlayBgm(args.Bgm).Coroutine();
- }
- else
- {
- SoundManager.Instance.StopBgm();
- }
- }
- }
- public class SoundManager : Singleton<SoundManager>, ISingletonAwake
- {
- public AudioSource UnityAudioSource { get; private set; }
- public bool Mute
- {
- get { return UnityAudioSource.mute; }
- set { UnityAudioSource.mute = value; }
- }
- public float Volume
- {
- get { return UnityAudioSource.volume; }
- set { UnityAudioSource.volume = value; }
- }
- public void Awake()
- {
- UnityAudioSource = GameObject.Find("/Global/Audio").GetComponent<AudioSource>();
- UnityAudioSource.loop = true;
- UnityAudioSource.volume = 1f;
- UnityAudioSource.playOnAwake = false;
- var mute = GameSetting.Instance.GetBool(GameSetting.Sets.Mute_int);
- UnityAudioSource.mute = mute;
- }
- public async ETTask PlayBgm(string name)
- {
- Log.Debug($"play bgm:{name}");
- var ac = await GameObjectPool.Instance.AcquireSound(name);
- UnityAudioSource.clip = ac;
- UnityAudioSource.Play();
- }
- public void StopBgm()
- {
- Log.Debug("stop bgm");
- UnityAudioSource.Stop();
- }
- public async ETTask PlayUISound(string name, float duration = -1f)
- {
- var key = name;
- var m = Regex.Match(key, "/?res/sound/.*/([\\w_\\d]+)\\.assetbundles$");
- if (m.Success)
- {
- key = m.Groups[1].Value.ToLower();
- }
- var ac = await GameObjectPool.Instance.AcquireSound(key);
- UnityAudioSource.PlayOneShot(ac);
- }
- //TODO:实现3D音源随物体移动
- public async ETTask Play3DSound(string name, Vector3 pos, float duration = -1f)
- {
- var key = name;
- var m = Regex.Match(key, "/?res/sound/.*/([\\w_\\d]+)\\.assetbundles$");
- if (m.Success)
- {
- key = m.Groups[1].Value.ToLower();
- }
- //Log.Debug($"play 3dsound: {key}");
- var ac = await GameObjectPool.Instance.AcquireSound(key);
- //AudioSource.PlayClipAtPoint(ac, pos);
- UnityAudioSource.PlayOneShot(ac);
- }
- }
|