yyl
2026-03-04 bc1cb6da854cb2e9144f10ed55330a537ecdca16
Main/System/Sound/SoundPlayer.cs
@@ -24,7 +24,7 @@
                {
                    if (m_Instance == null)
                    {
                        CreateSoundPlayer();
                        CreateSoundPlayer().Forget();
                    }
                }
            }
@@ -74,25 +74,10 @@
    public void Init()
    {
        //初始化用
    }
    public static void CreateSoundPlayer()
    {
        if (m_Instance != null)
        {
            return;
        }
        var gameObject = GameObject.Instantiate(BuiltInLoader.LoadPrefab("SoundPlayer"));
        m_Instance = gameObject.GetComponent<SoundPlayer>();
        m_Instance.name = "SoundPlayer";
        m_Instance.SetActive(true);
        DontDestroyOnLoad(gameObject);
        Debug.Log("CreateSoundPlayer");
    }
    public static async UniTask CreateSoundPlayerAsync()
    public static async UniTask CreateSoundPlayer()
    {
        if (m_Instance != null)
        {
@@ -105,10 +90,10 @@
        m_Instance.name = "SoundPlayer";
        m_Instance.SetActive(true);
        DontDestroyOnLoad(gameObject);
        Debug.Log("CreateSoundPlayer");
        Debug.Log("SoundPlayer 创建完成");
    }
    public void PlayBackGroundMusic(int _audioId)
    public async UniTask PlayBackGroundMusic(int _audioId)
    {
        if (_audioId <= 0)
        {
@@ -122,22 +107,18 @@
            var config = AudioConfig.Get(_audioId);
            if (config != null)
            {
                AudioLoader.LoadAudioAsync(config.Folder, config.Audio, (bool _ok, UnityEngine.Object _object) =>
                AudioLoader.LoadAudio(config.Folder, config.Audio).ContinueWith(clip =>
                {
                    if (_ok && _object != null)
                    if (clip != null)
                    {
                        clip = _object as AudioClip;
                        if (clip != null)
                        if (!musicAudioClipDict.ContainsKey(_audioId))
                        {
                            if (!musicAudioClipDict.ContainsKey(_audioId))
                            {
                                musicAudioClipDict[_audioId] = clip;
                            }
                            StartCoroutine(Co_BackGroundMusicFadeOutIn(clip, false));
                            musicAudioClipDict[_audioId] = clip;
                        }
                        StartCoroutine(Co_BackGroundMusicFadeOutIn(clip, false));
                    }
                });
                }).Forget();
            }
        }
        else
@@ -150,7 +131,7 @@
    }
    int backGroudAudioIdRef = 0;
    public void PlayBackGroundMusicOneShot(int _audioId)
    public async void PlayBackGroundMusicOneShot(int _audioId)
    {
        var config = AudioConfig.Get(_audioId);
        if (config == null)
@@ -158,7 +139,7 @@
            return;
        }
        var clip = AudioLoader.LoadAudio(config.Folder, config.Audio);
        var clip = await AudioLoader.LoadAudio(config.Folder, config.Audio);
        if (clip == null)
        {
            return;
@@ -193,9 +174,7 @@
                if (key != _exclude)
                {
                    var config = AudioConfig.Get(key);
                    #pragma warning disable CS0618 // Obsolete — sync legacy unload
                    ResManager.Instance.UnloadAsset("Audio/" + config.Folder, config.Audio);
                    #pragma warning restore CS0618
                }
            }
@@ -215,10 +194,10 @@
    {
        await UniTask.Delay(1);
        if (this == null) return; // destroyed during await
        PlayUIAudio(_audioId);
        await PlayUIAudio(_audioId);
    }
    public void PlayUIAudio(int _audioId)
    public async UniTask PlayUIAudio(int _audioId)
    {
        if (_audioId <= 0)
        {
@@ -231,7 +210,7 @@
            var config = AudioConfig.Get(_audioId);
            if (config != null)
            {
                clip = AudioLoader.LoadAudio(config.Folder, config.Audio);
                clip = await AudioLoader.LoadAudio(config.Folder, config.Audio);
                if (clip != null)
                {
                    if (commonUseAudioSet.Contains(_audioId))
@@ -261,7 +240,7 @@
        }
    }
    public void PlayAudio(AudioSource _source, int _audioId)
    public async void PlayAudio(AudioSource _source, int _audioId)
    {
        if (_audioId <= 0)
        {
@@ -279,7 +258,7 @@
            var config = AudioConfig.Get(_audioId);
            if (config != null)
            {
                clip = AudioLoader.LoadAudio(config.Folder, config.Audio);
                clip = await AudioLoader.LoadAudio(config.Folder, config.Audio);
                if (clip != null)
                {
                    if (commonUseAudioSet.Contains(_audioId))
@@ -313,7 +292,7 @@
        }
    }
    public void PlayNewBieAudio(int _audioId)
    public async UniTask PlayNewBieAudio(int _audioId)
    {
        if (_audioId <= 0)
        {
@@ -324,7 +303,7 @@
        var config = AudioConfig.Get(_audioId);
        if (config != null)
        {
            clip = AudioLoader.LoadAudio(config.Folder, config.Audio);
            clip = await AudioLoader.LoadAudio(config.Folder, config.Audio);
        }
        if (clip != null)
@@ -343,7 +322,7 @@
        }
    }
    public void PlayNpcAudio(int _audioId)
    public async void PlayNpcAudio(int _audioId)
    {
        if (_audioId <= 0)
        {
@@ -354,7 +333,7 @@
        var config = AudioConfig.Get(_audioId);
        if (config != null)
        {
            clip = AudioLoader.LoadAudio(config.Folder, config.Audio);
            clip = await AudioLoader.LoadAudio(config.Folder, config.Audio);
        }
        if (clip != null)
@@ -383,11 +362,14 @@
    public void PlayLoginMusic()
    {
       var loginMusic = BuiltInLoader.LoadMusic("login");
       if (!m_MusicAudioSource.isPlaying || m_MusicAudioSource.clip != loginMusic)
       {
           StartCoroutine(Co_BackGroundMusicFadeOutIn(loginMusic, false));
       }
        BuiltInLoader.LoadMusicAsync("login").ContinueWith(loginMusic =>
        {
            if (this == null) return;
            if (!m_MusicAudioSource.isPlaying || m_MusicAudioSource.clip != loginMusic)
            {
                StartCoroutine(Co_BackGroundMusicFadeOutIn(loginMusic, false));
            }
        }).Forget();
    }
    public async UniTask PlayLoginMusicAsync()
@@ -474,6 +456,6 @@
    IEnumerator Co_DelayPlayBackGrondMusic(float _delay, int _audioId)
    {
        yield return new WaitForSeconds(_delay);
        PlayBackGroundMusic(_audioId);
        PlayBackGroundMusic(_audioId).Forget();
    }
}