Что это: класс (не MonoBehaviour) воспроизведения случайной музыки из списка без повторов подряд. Управляется через AM. Пространство имён: Neo.Audio. Файл: Scripts/Audio/RandomMusicController.cs.
Как использовать: настроить через AM; переключение треков и остановка через API AM; события при смене трека.
- Пространство имен:
Neo.Audio - Путь к файлу:
Assets/Neoxider/Scripts/Audio/RandomMusicController.cs
Описание Контроллер для автоматического воспроизведения случайных музыкальных треков из списка с предотвращением повторения одного и того же трека подряд.
Ключевые особенности
- Не MonoBehaviour: Обычный класс, не требует компонента на GameObject.
- Автоматическое переключение: Автоматически переключается на следующий трек после завершения текущего.
- Без повторов: Гарантирует, что один и тот же трек не будет проигран дважды подряд (если в списке больше одного трека).
- События: Предоставляет события для отслеживания смены треков и остановки.
Публичные свойства
CurrentTrack(AudioClip): Текущий воспроизводимый трек илиnull.IsPlaying(bool): Возвращаетtrue, если музыка воспроизводится.IsPaused(bool): Возвращаетtrue, если воспроизведение приостановлено.
Публичные события
OnTrackChanged(Action<AudioClip>): Вызывается при смене трека.OnStopped(Action): Вызывается при остановке воспроизведения.
Публичные методы
Initialize(AudioSource audioSource, AudioClip[] tracks): Инициализирует контроллер с указанным AudioSource и списком треков. Должен быть вызван перед использованием.Start(): Начинает воспроизведение случайной музыки из списка треков.Stop(): Останавливает воспроизведение музыки.Pause(): Приостанавливает воспроизведение музыки.Resume(): Возобновляет воспроизведение приостановленной музыки.
Обычно RandomMusicController используется внутри AM и не требует прямого создания. Однако если нужно использовать его отдельно:
using Neo.Audio;
using UnityEngine;
public class Example : MonoBehaviour
{
public AudioSource musicSource;
public AudioClip[] musicTracks;
private RandomMusicController controller;
void Start()
{
controller = new RandomMusicController();
controller.Initialize(musicSource, musicTracks);
controller.OnTrackChanged += OnTrackChanged;
controller.Start();
}
void OnTrackChanged(AudioClip track)
{
Debug.Log($"Now playing: {track.name}");
}
void OnDestroy()
{
controller?.Stop();
}
}- Контроллер требует инициализации через
Initialize()перед использованием. - Если список треков пуст или равен
null, воспроизведение не начнется. - Контроллер использует UniTask для асинхронной работы, поэтому может работать без MonoBehaviour.
- Для управления случайной музыкой рекомендуется использовать методы
AM.EnableRandomMusic()иAM.DisableRandomMusic().