Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- using UnityEngine.UI;
- public class Sound : MonoBehaviour
- {
- /// <summary>
- /// Имя ключа для сохранения и загрузки громкости
- /// </summary>
- [SerializeField]
- private string _volumeSaveKey = "MusicVolume";
- /// <summary>
- /// Источник звука, для которого будет применяться громкость
- /// </summary>
- [SerializeField]
- private AudioSource _audioSource;
- /// <summary>
- /// Слайдер, с помощью которого будеи меняться громкость
- /// </summary>
- [SerializeField]
- private Slider _slider;
- /// <summary>
- /// Стандартное значение громкости, если при первом запуске игры не было сохранения
- /// </summary>
- [SerializeField]
- private float _defaultVolumeValue = 1f;
- /// <summary>
- /// Вызывается раньше Start
- /// </summary>
- private void Awake()
- {
- DefaultConfigSlider();
- LoadVolumeValueToSlider();
- // Подписываемся на событие измнения значения слайдера громкости
- _slider.onValueChanged.AddListener(OnVolumeSliderValueChanged);
- }
- private void OnDestroy()
- {
- // Обязательно!!! Отписывемся на событие измнения значения слайдера громкости, когда скрипт уничтожится или сцена закроется
- _slider.onValueChanged.RemoveListener(OnVolumeSliderValueChanged);
- }
- /// <summary>
- /// Загрузка значения слайдера из сохранения
- /// </summary>
- private void LoadVolumeValueToSlider()
- {
- float volume = PlayerPrefs.GetFloat(_volumeSaveKey, _defaultVolumeValue);
- _slider.value = volume;
- _audioSource.volume = volume;
- }
- /// <summary>
- /// Стандартная настрока слайдера чтобы он соответвовал громкости для AudioSource
- /// </summary>
- private void DefaultConfigSlider()
- {
- _slider.minValue = 0f;
- _slider.maxValue = 1;
- _slider.wholeNumbers = false;
- }
- /// <summary>
- /// Действие которое происзодит когда значение слайдера поменялось, например игрок покрутил слайдер в настройках
- /// </summary>
- /// <param name="value"> Новое значение слайдера громкости</param>
- private void OnVolumeSliderValueChanged(float value)
- {
- // Cтавим значение громкости для AudioSource
- _audioSource.volume = value;
- // Сохрнаяем новое значение громкости
- PlayerPrefs.SetFloat(_volumeSaveKey, value);
- }
- }
Add Comment
Please, Sign In to add comment