请问unity如何实现切换场景时根据场景改变背景音乐且保持背景音乐的音量大小控制一致?

(表达能力不行,希望有人能看懂并给出解答🙏)
相当于需要实现设置界面内有控制音量大小的滑动条,切换场景改变背景音乐,设置按钮始终存在,且滑动条控制音量大小与原场景一致

以下是我的失败的方法之一:
场景A中有空对象audiomanager,上面挂了脚本1和脚本2(获取audiosource,实现滑动条、背景音乐音量大小、显示音量大小的文字同步变化)。脚本1awake函数中设置了当前对象dontdestroy,并且play背景音乐(循环播放,如何在播放这个音乐的时候判断场景是否发生变化?如果发生变化,需要改变背景音乐,且控制音量大小与之前音乐的一致)
当前脚本1有audioclip的数组变量,数组下标分别与场景编号一一对应,需要实现切换场景的时候根据场景改变clip

基于new bing部分指引作答:
在 Unity 中,您可以使用 AudioManager 来实现切换场景时根据场景改变背景音乐,并且保持背景音乐的音量大小一致。

首先,创建一个 AudioManager 脚本并将其附加到一个空游戏对象上。然后,在 AudioManager 脚本中编写以下代码:

using UnityEngine;
using UnityEngine.SceneManagement;

public class AudioManager : MonoBehaviour
{
    public AudioClip[] audioClips;   // 存储不同场景的背景音乐
    private AudioSource audioSource; // 背景音乐的 AudioSource 组件

    private void Awake()
    {
        // 在场景加载完成后调用 SceneLoaded 方法
        SceneManager.sceneLoaded += SceneLoaded;

        // 获取 AudioManager 游戏对象上的 AudioSource 组件
        audioSource = GetComponent<AudioSource>();
    }

    private void SceneLoaded(Scene scene, LoadSceneMode mode)
    {
        // 根据加载的场景修改背景音乐
        int index = (int)scene.buildIndex;  // 假设使用场景的 build index 作为音乐数组的索引
        if (index >= 0 && index < audioClips.Length)
        {
            AudioClip clip = audioClips[index];
            audioSource.clip = clip;
            if (!audioSource.isPlaying)
            {
                audioSource.Play();  // 如果背景音乐没有正在播放,则开始播放
            }
        }
    }

    // 设置背景音乐的音量大小,供其他脚本调用
    public void SetVolume(float volume)
    {
        audioSource.volume = volume;
    }
}

接下来,在每个场景中创建一个空游戏对象(可以命名为 AudioManager)并将 AudioManager 脚本附加到该游戏对象上。在 Inspector 窗口中,添加需要的 AudioClip 并分配到对应场景的数组元素中。

最后,您可以在其他脚本中通过获取 AudioManager 游戏对象并调用其方法来实现音量控制。例如:

public class VolumeControl : MonoBehaviour
{
    private AudioManager audioManager;

    private void Start()
    {
        audioManager = FindObjectOfType<AudioManager>();
    }

    public void SetVolume(float volume)
    {
        audioManager.SetVolume(volume);
    }
}

以上是一个基本的实现方案,您可以根据自己的需求进行修改和扩展。请确保在切换场景时不要销毁 AudioManager 游戏对象,以便能够在整个应用程序中保持背景音乐的音量大小一致。