forked from vladislove/pgiz4
56 lines
1.8 KiB
C#
56 lines
1.8 KiB
C#
using UnityEngine;
|
|
|
|
// Этот скрипт будет единственным в своем роде и не будет уничтожаться при перезагрузке сцены
|
|
public class AudioManager : MonoBehaviour
|
|
{
|
|
public static AudioManager Instance { get; private set; }
|
|
|
|
[Header("Audio Clips")]
|
|
public AudioClip backgroundMusic;
|
|
public AudioClip coinSound;
|
|
// Сюда можно будет добавить звуки прыжка, слайда, смерти и т.д.
|
|
|
|
private AudioSource musicSource;
|
|
private AudioSource sfxSource;
|
|
|
|
private void Awake()
|
|
{
|
|
// Реализация паттерна Singleton
|
|
if (Instance != null && Instance != this)
|
|
{
|
|
Destroy(gameObject);
|
|
return;
|
|
}
|
|
Instance = this;
|
|
DontDestroyOnLoad(gameObject);
|
|
|
|
// Создаем два компонента AudioSource
|
|
musicSource = gameObject.AddComponent<AudioSource>();
|
|
sfxSource = gameObject.AddComponent<AudioSource>();
|
|
|
|
// Настраиваем источник для музыки
|
|
musicSource.loop = true;
|
|
musicSource.playOnAwake = false;
|
|
}
|
|
|
|
void Start()
|
|
{
|
|
// Запускаем фоновую музыку
|
|
if (backgroundMusic != null)
|
|
{
|
|
musicSource.clip = backgroundMusic;
|
|
musicSource.Play();
|
|
}
|
|
}
|
|
|
|
// Публичный метод для проигрывания звука монеты
|
|
public void PlayCoinSound()
|
|
{
|
|
if (coinSound != null)
|
|
{
|
|
// PlayOneShot позволяет проигрывать звук, не прерывая другие эффекты
|
|
sfxSource.PlayOneShot(coinSound);
|
|
}
|
|
}
|
|
}
|