Проблемы с Мут/Анмут звуков при переключении сцен.

Программирование на Юнити.

Проблемы с Мут/Анмут звуков при переключении сцен.

Сообщение farit 08 янв 2023, 21:00

Всем доброго времени суток. Программирую всего месяца 4, поэтому разбираюсь пока плох, самостоятельно найти выход из ситуации не смог, очень надеюсь на Вашу помощь.

Ситауция: Пытюась создать словный СаундМенеджер для игры, что бы была возможность Включить или Отключать звуки в игре в любой момент. Изначально встрял с включением звука при переходе с одного левла на другой, т.е. в МэйнМеню звук вырубался, а при включении 1 лвл он снова влюкчался автоматом. Решение вроде нашлось, одако теперь я постоянно выхватываю "UnassignedReferenceException: The variable soundOffButton of SoundsManager has not been assigned.
You probably need to assign the soundOffButton variable of the SoundsManager script in the inspector." и не понимаю почему. На сколько я понимаю это ошибка которая вылетает если не назначен как либо обьект, однако всё назначено и все на местах. Ещё больше озадачивает тот факт что в МейнМеню всё работает коректно и никаких ошибок не выдает.

Ниже привожу код.

В soundOffButton и soundOnButton назначены соответсвующие кнопки которые выполняют соотвественно SoundsOff и SoundsOn. Данные кнопки размещеные в Пустой объект и создан префаб. Это префаб используется и в МейнМеню и в Левел1, однако в первом все отробатыет, а во втором Юнити ругается. В чем может быть причина? Благодарю за внимание.

Синтаксис:
Используется csharp
public class SoundsManager : MonoBehaviour
{

    public GameObject soundOffButton;
    public GameObject soundOnButton;

    public List<AudioSource> audioSource = new List<AudioSource>();


    private void Awake()
    {
        FindSoundOffOnButtons();

        if (GameData.Instance.isMuted)
        {
            Debug.Log("Is muted");
            SoundsOff();
        }
    }


    public void SoundsOff()
    {
       
        for (int i = 0; i < audioSource.Count; i++)
        {
            audioSource[i].enabled = false;  
        }

        Image offButton = soundOffButton.GetComponent<Image>();
        offButton.enabled = false;

        Image onButton = soundOnButton.GetComponent<Image>();
        onButton.enabled = true;

        GameData.Instance.isMuted = true;
        Debug.Log("Sounds Off");
    }

    public void SoundsOn()
    {
       
        for (int i = 0; i < audioSource.Count; i++)
        {
            audioSource[i].enabled = true;
        }

        Debug.Log("Get try to turn on");
        Image offButton = soundOffButton.GetComponent<Image>();
        offButton.enabled = true;

        Debug.Log("Turn on");
        Image onButton= soundOnButton.GetComponent<Image>();
        onButton.enabled = false;

        GameData.Instance.isMuted = false;
        Debug.Log("Sounds On");
    }

    private void FindSoundOffOnButtons()
    {
        Debug.Log("Find buttons");
        soundOffButton = GameObject.Find("SoundOffButton");
        soundOnButton = GameObject.Find("SoundOnButton");

        Image onButton = soundOnButton.GetComponent<Image>();
        onButton.enabled = false;
    }

}
 
farit
UNец
 
Сообщения: 8
Зарегистрирован: 02 окт 2022, 01:56

Re: Проблемы с Мут/Анмут звуков при переключении сцен.

Сообщение 1max1 08 янв 2023, 21:21

При загрузке новой сцены все объекты старой сцены уничтожаются. То есть для каждой сцены тебе нужен свой менеджер или делать первый через https://docs.unity3d.com/ScriptReferenc ... nLoad.html
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Проблемы с Мут/Анмут звуков при переключении сцен.

Сообщение farit 08 янв 2023, 22:22

1max1 писал(а):При загрузке новой сцены все объекты старой сцены уничтожаются. То есть для каждой сцены тебе нужен свой менеджер или делать первый через https://docs.unity3d.com/ScriptReferenc ... nLoad.html


Да, у меня в каждой сцене присутсвует СаундМэнеджер и онСаунд оффСаунд кнопки. Я пробовал ДонтДестройОнЛоад, к сожалению никакого эффекта не возимело, т.к. в таком случае не срабатывает Awake и кнопки и метод FindSoundsOnOffButtons не срабатывает.
farit
UNец
 
Сообщения: 8
Зарегистрирован: 02 окт 2022, 01:56

Re: Проблемы с Мут/Анмут звуков при переключении сцен.

Сообщение farit 08 янв 2023, 22:30

Еще хотелось бы отметить, что все отрабатывает корректно, до того момента пока я в Левел1 не прожму кнопку звука... Всё работает как надо, как только я нажимаю кнопку сразу вылетает Ошибка...
farit
UNец
 
Сообщения: 8
Зарегистрирован: 02 окт 2022, 01:56

Re: Проблемы с Мут/Анмут звуков при переключении сцен.

Сообщение 1max1 08 янв 2023, 22:55

Видимо твой компонент теряет ссылку на объект. Ты когда создаешь префаб у него все ссылки слетают если они указывали на объекты сцены, хотя их вроде как уже запрещено указывать в новых версиях юнити, хз может у тебя 5 какая-то, где это еще можно. Ссылки надо устанавливать заново при создании префаба.
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Проблемы с Мут/Анмут звуков при переключении сцен.

Сообщение farit 09 янв 2023, 00:35

1max1 писал(а):Видимо твой компонент теряет ссылку на объект. Ты когда создаешь префаб у него все ссылки слетают если они указывали на объекты сцены, хотя их вроде как уже запрещено указывать в новых версиях юнити, хз может у тебя 5 какая-то, где это еще можно. Ссылки надо устанавливать заново при создании префаба.


Честно говоря несовсем понимаю о чем ты... Версия новая 2021.3.. для наглядности закинуо скрин, возможно я что то неправильно обьяснил, я пока не очень все понимаю.

https://vk.com/albums8596632?z=photo8596632_457242072%2Fphotos8596632
farit
UNец
 
Сообщения: 8
Зарегистрирован: 02 окт 2022, 01:56

Re: Проблемы с Мут/Анмут звуков при переключении сцен.

Сообщение farit 09 янв 2023, 01:09

Вопрос решился путём создания нового префаба кнопок из обектов в МейнМеню... Честно говоря я так и не понял почему префаб который был создан отдельно не работал, а новый префаб который я создал из МейнМеню сработал, хотя на сколько я помню и в МейнМеню и в Лвл я закидывал один и тот же префаб... Был бы благодарен объеснению почему так проихошло, дабы знать что делать если снова попаду в таккую ситуацию... Спасибо
farit
UNец
 
Сообщения: 8
Зарегистрирован: 02 окт 2022, 01:56

Re: Проблемы с Мут/Анмут звуков при переключении сцен.

Сообщение 1max1 09 янв 2023, 01:35

Хз, как вариант у тебя могло бы быть в сцене 2 скрипта менеджера, в одном пустые поля во втором заполненные и ты пытался обратится к первому. Так не скажешь нужно сидеть и с Debug.Log ом все проверять.
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Проблемы с Мут/Анмут звуков при переключении сцен.

Сообщение farit 09 янв 2023, 01:44

1max1 писал(а):Хз, как вариант у тебя могло бы быть в сцене 2 скрипта менеджера, в одном пустые поля во втором заполненные и ты пытался обратится к первому. Так не скажешь нужно сидеть и с Debug.Log ом все проверять.


Не, менеджер был один. Проблема была именно в префабе кнопок. Менеджер находил префабы кнопок которые находились в иирархии, но по ним как будто никуда не переходил. Получилось как будто битый пустой префаб. Когда я выдернул кнопки из МейнМеню и создал из них новый префаб, взял его и воткнул в Иерархию в Лвл1, все сразу заработало и никаких больше ошибок. Как то так... Я так и не понял почему так произошло, в каком моменте произшла оплошность. В любом случае спасибо, твой ответ про битые ссылки надоумил проверить префабы.
farit
UNец
 
Сообщения: 8
Зарегистрирован: 02 окт 2022, 01:56


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9