Я предполагаю, что все, что нужно сценариям Music
, является его дочерним элементом, поэтому с ним всегда все в порядке.
Однако после Destroy
экземпляра из новой сцены ваши кнопки из новой сцена теряет ссылку на экземпляр Music
.
Так как у вас в любом случае есть синглтон, вы также можете (ab) использовать его и прикрепить к самой кнопке
public MusicButton : MonoBehaviour
{
public void MusicOn()
{
Music.Instance.MusicOnOff();
}
}
И укажите, что вместо этого в вашей кнопке.
Также изображение может, например, зарегистрироваться на Music.Instance
, например,
public MusicImage : MonoBehaviour
{
private void Start()
{
Music.Instance.musicOffImage = gameObject;
gameObject.SetActive(Music.Instance.mainMusic.isPlaying);
}
}
Альтернатива
В вашем вопросе Вы сказали, что все объекты являются дочерними по отношению к пустому объекту, однако единственный объект, который получает DontDestroyOnLoad
, это Music
. Остальные будут уничтожены и перезагружены, поэтому все эти ссылки также могут быть потеряны. Вы, вероятно, скорее всего DontDestroyOnLoad
весь пустой объект и будете скрывать / показывать кнопку только в определенных сценах.