Add initial project files and configurations for Unity setup
This commit is contained in:
68
Assets/Scripts/Infrastructure/Unity/SoundManager.cs
Normal file
68
Assets/Scripts/Infrastructure/Unity/SoundManager.cs
Normal file
@@ -0,0 +1,68 @@
|
||||
using System;
|
||||
using KBCore.Refs;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Infrastructure.Unity
|
||||
{
|
||||
[RequireComponent(typeof(AudioSource))]
|
||||
public class SoundManager : MonoBehaviour
|
||||
{
|
||||
[Header("Music")]
|
||||
[SerializeField] private AudioClip bgMusicClip;
|
||||
|
||||
[Header("Sound Effects")]
|
||||
[SerializeField] private AudioClip startClip;
|
||||
|
||||
[SerializeField] private AudioClip scoreClip;
|
||||
[SerializeField] private AudioClip gameOverClip;
|
||||
[SerializeField] private AudioClip tileWarningClip;
|
||||
[SerializeField] private AudioClip tileBreakClip;
|
||||
|
||||
[Self] [SerializeField] private AudioSource musicSource;
|
||||
[Self] [SerializeField] private AudioSource sfxSource;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
musicSource.loop = true;
|
||||
musicSource.playOnAwake = false;
|
||||
}
|
||||
|
||||
public void PlayMusic()
|
||||
{
|
||||
if (!bgMusicClip) return;
|
||||
|
||||
musicSource.clip = bgMusicClip;
|
||||
musicSource.Play();
|
||||
}
|
||||
|
||||
public void StopMusic()
|
||||
{
|
||||
musicSource.Stop();
|
||||
}
|
||||
|
||||
public void PlayGameStart() => PlaySfx(startClip);
|
||||
public void PlayScore() => PlaySfx(scoreClip);
|
||||
public void PlayGameOver() => PlaySfx(gameOverClip);
|
||||
|
||||
public void PlayTileBreak(Vector3 position)
|
||||
{
|
||||
if (!tileBreakClip) return;
|
||||
|
||||
AudioSource.PlayClipAtPoint(tileBreakClip, position, 1f);
|
||||
}
|
||||
|
||||
public void PlayTileWarning(Vector3 position)
|
||||
{
|
||||
if (!tileWarningClip) return;
|
||||
|
||||
AudioSource.PlayClipAtPoint(tileWarningClip, position, 0.5f);
|
||||
}
|
||||
|
||||
private void PlaySfx(AudioClip clip)
|
||||
{
|
||||
if (!clip) return;
|
||||
|
||||
sfxSource.PlayOneShot(clip);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user