66 lines
1.6 KiB
C#
66 lines
1.6 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using FMOD;
|
|
using FMOD.Studio;
|
|
using FMODUnity;
|
|
|
|
[RequireComponent(typeof(FMODUnity.StudioBankLoader))]
|
|
public class AudioManager : MonoBehaviour
|
|
{
|
|
[System.Serializable]
|
|
private struct AdjustableAudioBus
|
|
{
|
|
public string BusName;
|
|
public PlayerPrefValue PlayerPref;
|
|
|
|
public void Initialise()
|
|
{
|
|
var bus = FMODUnity.RuntimeManager.GetBus( $"bus:/{BusName}" );
|
|
PlayerPref.OnFloatSet.AddListener( (vol) => bus.setVolume(vol) );
|
|
bus.setVolume( PlayerPref.GetFloat( 1.0f ) );
|
|
}
|
|
}
|
|
|
|
[SerializeField]
|
|
[EventRef]
|
|
private string _musicId;
|
|
|
|
[SerializeField]
|
|
private AdjustableAudioBus _musicBus;
|
|
|
|
[SerializeField]
|
|
private AdjustableAudioBus _sfxBus;
|
|
|
|
[SerializeField]
|
|
private AdjustableAudioBus _voBus;
|
|
|
|
[SerializeField]
|
|
private AdjustableAudioBus _uiBus;
|
|
|
|
public AudioManager Instance { get; private set; }
|
|
|
|
private EventInstance _musicInstance;
|
|
|
|
void Awake()
|
|
{
|
|
if ( Instance != null )
|
|
{
|
|
Destroy( gameObject );
|
|
return;
|
|
}
|
|
|
|
Instance = this;
|
|
|
|
GetComponent<StudioBankLoader>().enabled = true;
|
|
|
|
_musicInstance = RuntimeManager.CreateInstance( _musicId );
|
|
_musicInstance.start();
|
|
|
|
_musicBus.Initialise();
|
|
_sfxBus.Initialise();
|
|
_voBus.Initialise();
|
|
_uiBus.Initialise();
|
|
}
|
|
}
|