Что это: синглтон воспроизведения звуков и музыки. Два канала (эффекты и музыка), массивы клипов, Play(id)/Play(AudioClip). Пространство имён: Neo.Audio. Файл: Scripts/Audio/AudioSimple/AM.cs.
Как использовать: в сцене один объект с AM; из кода вызывать AM.I.Play(id) или AM.I.Play(clip); для музыки — методы музыки; опционально RandomMusicController.
- Пространство имен:
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'ам.
- Добавьте компонент
AMна объект в сцене (или используйте существующий). - В разделе Random Music включите флаг
Use Random Music. - Заполните массив
Random Music Tracksмузыкальными треками (AudioClip). - При старте сцены случайная музыка запустится автоматически, если флаг включен.
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для отслеживания смены треков в режиме случайной музыки.