Найти в Дзене
Евгений Камалов

Как выключить звук в браузерной игре на Unity

Одно из главных требований, для публикации браузерной игры на платформе яндекс игры, это полное отключение звука игры, к примеру, когда игрок во время игры перешел на другую вкладку браузера. Если игру разрабатываете только для ПК, тогда можно выключать звук с помощью выключения галочки Run In Background (Edit > Project Settings > Player> Resolution and Presentation). Если же игру разрабатываете еще и для мобильного телефона, тогда надо ставить галочку. Иначе будут ошибки именно в мобильной версии браузера. Выключать звук будем с помощью Audio Mixer. Для этого в папке Assets, создаем папку Sounds, в котором создадим Audio Mixer. Назовем его, допустим Controller. Щелкаем по нему и открывается окно Audio Mixer, в котором уже есть нам нужный ползунок Master, который мы и будем отключать. Далее выделяем Master (синий прямоугольник обведет ползунок). Переходим в Inspector, там, где Attenuation, кликаем правой кнопкой мыши. Появится окошко, где выбираем Expose ‘Volume (of Music) ’ to script

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

Если игру разрабатываете только для ПК, тогда можно выключать звук с помощью выключения галочки Run In Background (Edit > Project Settings > Player> Resolution and Presentation).

Галочку не ставить
Галочку не ставить

Если же игру разрабатываете еще и для мобильного телефона, тогда надо ставить галочку. Иначе будут ошибки именно в мобильной версии браузера.

Выключать звук будем с помощью Audio Mixer. Для этого в папке Assets, создаем папку Sounds, в котором создадим Audio Mixer. Назовем его, допустим Controller.

Создаем Audio Mixer
Создаем Audio Mixer
Открываем окно Audio Mixer
Открываем окно Audio Mixer

Щелкаем по нему и открывается окно Audio Mixer, в котором уже есть нам нужный ползунок Master, который мы и будем отключать.

А вот и ползунок Master
А вот и ползунок Master

Далее выделяем Master (синий прямоугольник обведет ползунок). Переходим в Inspector, там, где Attenuation, кликаем правой кнопкой мыши. Появится окошко, где выбираем Expose ‘Volume (of Music) ’ to script.

Кликаем правой кнопкой мыши, где указана стрелочка
Кликаем правой кнопкой мыши, где указана стрелочка

Снова переходим в окно Audio Mixer там, где надпись Exposed Parameters, вводим название VolumeMaster.

Вводим название VolumeMaster, без пробела
Вводим название VolumeMaster, без пробела

Практически все готово. Осталось создать пустышку, куда в дальнейшем закинем скрипт. Обычно я создаю пустышку, на которую потом кидаю разные скрипты интерфейса, менеджера, паузы, фоновой музыки игры. Пустышку называю Help и сбрасываю ее координаты. Далее в этой пустышке создаю пустышку с именем Pause. Уже на эту пустышку (Pause), кидаю скрипт Pause.

Создаем пустышку Help, а в ней пустышку Pause. И не забудьте заполнить скрипт на сцене!!!
Создаем пустышку Help, а в ней пустышку Pause. И не забудьте заполнить скрипт на сцене!!!

Вот такой простой скрипт будет выключать, и включать общую громкость в игре.

Конечно, я вырезал из скрипта саму паузу в игре, чтобы вас не отвлекал остальной код скрипта от названия статьи.

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using UnityEngine.Audio;

public class Pause : MonoBehaviour

{

public AudioMixer audioController;

private void Start()

{

audioController.SetFloat("VolumeMaster", 0);

}

void OnApplicationFocus(bool hasFocus) // Выключает громкость вне фокуса, если был переход в другую вкладку

{

if (!hasFocus)

{

audioController.SetFloat("VolumeMaster", -80f); // тишина

}

else

{

audioController.SetFloat("VolumeMaster", 0);

}

}

}

Вот все!!! Теперь общий звук в игре будет выключаться, когда игрок перешел в другую вкладку. А также будет снова включаться, когда игрок вернется в игру.

Это вы можете сразу протестить в движке игры. Для этого закиньте звук на сцену, сделайте так, чтобы он сразу играл. Запустите игру. К примеру, тыкнете мышкой по окну Inspector, будет тишина. Потом тыкнете мышкой по окну Game, появится звук.

Совет. Звук в настройках WebGL оставляйте в DecompressOnLoad. Иначе модератор от Яндекс игры пришлет замечание: на Android устройствах плеер игры отображается в панели уведомлений. Это не соответствует пункту 1.6.1.6 требований платформы.

Звук в настройках WebGL оставляйте в DecompressOnLoad
Звук в настройках WebGL оставляйте в DecompressOnLoad

Надеюсь, статья вам была полезна!!! Если возникли вопросы, пишите в комментарии.

Выключение звука по этой статье, я реализовал в моей браузерной игре «Помоги коту Грею».

Информацию по моим играм можно посмотреть на сайте https://vk.com/public199787643

PS: "На картинках показана разработка моей новый игры "Битва боевых машин в пустыне", это пока рабочее название игры. Всем удачи в разработках игр!!! "