2016-08-02 3 views
0

У меня есть кнопки пользовательского интерфейса для переключения звука. Событие OnClick связано с этим одиночным GameObject. когда я перехожу к следующей сцене и возвращаюсь к основной сцене, я обнаруживаю, что объект OnClick пропадает, пока объект все еще находится в иерархии! так в чем проблема ?Кнопки пользовательского интерфейса перестают работать после загрузки другой сцены

using UnityEngine; 
using System.Collections; 
using UnityEngine.UI; 

public class SoundsManagerController : MonoBehaviour { 

    static SoundsManagerController Instance = null;  



    void Awake() 
    { 
     // First we check if there are any other instances conflicting 
     if (Instance != null) 
     { 
            // If that is the case, we destroy other instances 
            Destroy(gameObject); 
     } 
     else { 
      // Here we save our singleton instance 
      Instance = this; 

      // Furthermore we make sure that we don't destroy between scenes (this is optional) 
      DontDestroyOnLoad(gameObject); 
     } 
    } 

    public void toggleSound(){ 

     Instance.GetComponent<AudioSource>().enabled = !Instance.GetComponent< AudioSource>().enabled; 
    } 

} 

ответ

0

Используйте отдельный холст для кнопки и сохраняйте их как дочерние элементы одного объекта.

Если у вас уже есть холст в сцене, убедитесь, что кнопка установлена ​​в качестве дочернего объекта холста, когда вы собираетесь на сцену.

Если это необходимо для устранения проблемы, вы должны не использовать кнопку с одиночным объектом. Получите одиночный объект в Start() в любой сцене и переключитесь на звук звука с уже установленной кнопки, которая поддерживает ваш макет пользовательского интерфейса.

Получить объект singleton в начале, который поддерживает функцию вызова метода переключения.

SoundManagerController soundManager; 

void Start() 
{ 
soundManager = GameObject.FindWithTag("audio_manager_tag").GetComponent <SoundManagerController>(); 
} 

Вызовите метод ниже с помощью кнопки переключения.

public void CallToggleMethod() 
{ 
soundManager.toggleSound(); 
} 
+0

спасибо за вашу помощь .. но вы можете дать ссылку или пример для лучшего подхода, потому что я не люблю, когда несколько холста и делают их ребенок единственного объекта – dotfreelancer

+0

Где кнопка UI помещена для переключения? –

+0

под холстом – dotfreelancer

Смежные вопросы