Skip to content

Latest commit

 

History

History
127 lines (98 loc) · 8.29 KB

File metadata and controls

127 lines (98 loc) · 8.29 KB

AM (Audio Manager)

Что это: синглтон воспроизведения звуков и музыки. Два канала (эффекты и музыка), массивы клипов, Play(id)/Play(AudioClip). Пространство имён: Neo.Audio. Файл: Scripts/Audio/AudioSimple/AM.cs.

Как использовать: в сцене один объект с AM; из кода вызывать AM.I.Play(id) или AM.I.Play(clip); для музыки — методы музыки; опционально RandomMusicController.


Описание класса

AM

  • Пространство имен: Neo.Audio
  • Путь к файлу: Assets/Neoxider/Scripts/Audio/AudioSimple/AM.cs

Описание Синглтон, управляющий воспроизведением звуковых эффектов и музыки. Поддерживает как конкретную музыку из списка, так и случайное воспроизведение из отдельного списка треков.

Ключевые особенности

  • Централизованные плейлисты: Хранит массивы Sound (клип + громкость по умолчанию) и AudioClip для музыки.
  • Случайная музыка: Поддерживает режим случайной музыки через RandomMusicController с автоматическим переключением треков без повторов.
  • Взаимоисключающее переключение: При включении конкретной музыки останавливается случайная и наоборот.
  • Разделение каналов: Использует отдельные AudioSource для музыки и эффектов.
  • Гибкий API: Воспроизведение по ID из массивов или напрямую по AudioClip.
  • Авто-создание: Если AudioSource для музыки или эффектов не заданы, AM создаст их автоматически как дочерние объекты.
  • Стартовые громкости: Поддерживает настройку стартовых громкостей (startVolumeEfx, startVolumeMusic) для эффектов и музыки.
  • События: Предоставляет события для отслеживания начала/остановки музыки и смены треков.

Публичные свойства

  • Efx (AudioSource): AudioSource для воспроизведения звуковых эффектов.
  • Music (AudioSource): AudioSource для воспроизведения музыки.
  • startVolumeEfx (float): Стартовая громкость для эффектов.
  • startVolumeMusic (float): Стартовая громкость для музыки.

Публичные события

  • OnMusicStarted (Action<AudioClip>): Вызывается при начале воспроизведения музыки.
  • OnMusicStopped (Action): Вызывается при остановке музыки.
  • OnRandomMusicTrackChanged (Action<AudioClip>): Вызывается при смене трека в режиме случайной музыки.

Публичные методы

Воспроизведение звуковых эффектов

  • Play(int id, float volume): Воспроизводит звуковой эффект по id с указанной громкостью.
  • Play(int id): Воспроизводит звуковой эффект по id с его громкостью по умолчанию.
  • Play(AudioClip clip, float volume): Воспроизводит звуковой эффект напрямую по AudioClip с указанной громкостью.

Воспроизведение музыки

  • PlayMusic(int id, float volume): Включает музыкальный трек по id с указанной громкостью. Останавливает случайную музыку, если она была включена.
  • PlayMusic(int id): Включает музыкальный трек по id с базовой громкостью (1.0).
  • PlayMusicByClip(AudioClip clip, float volume): Воспроизводит музыку напрямую по AudioClip с указанной громкостью. Останавливает случайную музыку, если она была включена.
  • GetCurrentMusicClip(): Возвращает текущий воспроизводимый музыкальный клип или null.

Управление случайной музыкой

  • EnableRandomMusic(): Включает режим случайной музыки из списка randomMusicTracks. Останавливает текущую конкретную музыку.
  • DisableRandomMusic(): Выключает режим случайной музыки.
  • IsRandomMusicEnabled(): Возвращает true, если включен режим случайной музыки.

Управление громкостью

  • SetVolume(float volume, bool efx): Устанавливает громкость для эффектов (efx = true) или музыки (efx = false).
  • ApplyStartVolumes(): Применяет стартовые громкости к соответствующим AudioSource'ам.

3. Использование случайной музыки

Настройка через Inspector

  1. Добавьте компонент AM на объект в сцене (или используйте существующий).
  2. В разделе Random Music включите флаг Use Random Music.
  3. Заполните массив Random Music Tracks музыкальными треками (AudioClip).
  4. При старте сцены случайная музыка запустится автоматически, если флаг включен.

Использование через код

using Neo.Audio;
using UnityEngine;

public class MusicExample : MonoBehaviour
{
    void Start()
    {
        // Включить случайную музыку
        AM.I.EnableRandomMusic();
        
        // Подписаться на события смены треков
        AM.I.OnRandomMusicTrackChanged += OnTrackChanged;
    }
    
    void OnTrackChanged(AudioClip track)
    {
        Debug.Log($"Now playing: {track.name}");
    }
    
    void OnDestroy()
    {
        // Отписаться от событий
        AM.I.OnRandomMusicTrackChanged -= OnTrackChanged;
    }
    
    // Переключиться на конкретную музыку
    public void PlaySpecificMusic(int musicId)
    {
        AM.I.PlayMusic(musicId); // Автоматически остановит случайную музыку
    }
    
    // Вернуться к случайной музыке
    public void ReturnToRandomMusic()
    {
        AM.I.EnableRandomMusic(); // Автоматически остановит конкретную музыку
    }
    
    // Проверить, включена ли случайная музыка
    public void CheckRandomMusicStatus()
    {
        if (AM.I.IsRandomMusicEnabled())
        {
            Debug.Log("Random music is playing");
        }
    }
}

Важные замечания

  • Взаимоисключающее переключение: При вызове PlayMusic() или PlayMusicByClip() случайная музыка автоматически останавливается. При вызове EnableRandomMusic() текущая конкретная музыка останавливается.
  • Автозапуск: Если флаг Use Random Music включен в Inspector и список треков заполнен, случайная музыка запустится автоматически при инициализации AM.
  • События: Используйте OnRandomMusicTrackChanged для отслеживания смены треков в режиме случайной музыки.