Unity: Не уничтожать объект при смене сцены

Если использовать метод SceneManager.LoadScene или SceneManager.LoadSceneAsync, то старая (уже активная) сцена будет земенена новой, а все объекты старой сцены уничтожены.
Часто бывает нужно, чтобы объект сохранился.
Для примера я взял обучающий проект ScriptableObjectDemo.
Здесь сначала загружается сцена MainMenu, а после выбора всех параметров игры можно нажать кнопку «Play» и будет загружена новая сцена, но музыка прерываться не будет. Чтобы это реализовать, на начальную сцену к объекту MusicPlayer, у которого был компонент «Audio Source» добавили скрипт MusicPlayer.cs:

using UnityEngine;

public class MusicPlayer : MonoBehaviour
{

    private static MusicPlayer _instance;

    public void OnEnable()
    {
        _instance = this;
        DontDestroyOnLoad(gameObject);
    }

    public void Awake()
    {
        if (_instance) DestroyImmediate(gameObject);
    }
}

Unity: Не уничтожать объект при смене сцены

Теперь после того, как будет загружена новая сцена, кроме новой сцены будет сгенерирована сцена DontDestroyOnLoad, в которой будет сохранен объект MusicPlayer из старый сцены:
Unity: Не уничтожать объект при смене сцены