public void SetVolume(float decibel, ESoundTrack track) { string key; switch (track) { case ESoundTrack.BGM1: key = "VolumeBGM1"; break; case ESoundTrack.BGM2: key = "VolumeBGM2"; break; case ESoundTrack.BGM3: key = "VolumeBGM3"; break; case ESoundTrack.SE: key = "VolumeSE"; break; case ESoundTrack.Master: key = "VolumeMaster"; break; default: return; } if (float.IsNaN(decibel) || decibel < -96f) { decibel = -96f; } else if (decibel > 20f) { decibel = 20f; } cRes.AudioMixer.SetFloat(key, decibel); }
public void Unpause(ESoundTrack track) { var i = (int)track; if (i >= cTrackBgmNum) { return; } if (cPausingId[i] != -1) { cPlayingId[i] = cPausingId[i]; cPausingId[i] = -1; cSources[i].UnPause(); } }
public void Stop(ESoundTrack track) { var i = (int)track; if (i >= cTrackBgmNum) { return; } cPlayingId[i] = -1; cPausingId[i] = -1; if (cSources[i].isPlaying) { cSources[i].Stop(); } }
public void Play(int soundId, bool loop, ESoundTrack track) { if (track == ESoundTrack.SE) { PlaySE(soundId); return; } var i = (int)track; if (i >= cTrackBgmNum) { return; } if (cPlayingId[i] == soundId) { return; } if (cPausingId[i] == soundId) { cSources[i].loop = loop; Unpause(track); return; } var sound = cRes.GetSnd(soundId); if (sound.Data == null) { return; } if (cSources[i].isPlaying) { cSources[i].Stop(); } cPlayingId[i] = soundId; cPausingId[i] = -1; cSources[i].loop = loop; cSources[i].clip = sound.Data; cSources[i].Play(); }
/// <summary> /// 指定された音声トラックのサウンドを一時停止していた場合、再生を再開します。BGMトラック以外では常に無視されます。 /// </summary> /// <param name="track">対象の音声トラック</param> public void UnpauseSound(ESoundTrack track = ESoundTrack.BGM1) => cSound.Unpause(track);
/// <summary> /// 指定された音声トラックのサウンドを一時停止します。BGMトラック以外では常に無視されます。 /// </summary> /// <param name="track">対象の音声トラック</param> public void PauseSound(ESoundTrack track = ESoundTrack.BGM1) => cSound.Pause(track);
/// <summary> /// 指定された音声トラックのサウンドを停止します。BGMトラック以外では常に無視されます。 /// </summary> /// <param name="track">対象の音声トラック</param> public void StopSound(ESoundTrack track = ESoundTrack.BGM1) => cSound.Stop(track);
/// <summary> /// 指定された音声トラックの音量を変更します。 /// </summary> /// <param name="decibel">音量 (-80〜20dB)</param> /// <param name="track">対象の音声トラック</param> public void SetSoundDecibel(float decibel, ESoundTrack track = ESoundTrack.BGM1) => cSound.SetVolume(decibel, track);
/// <summary> /// 指定された音声トラックの音量を変更します。 /// </summary> /// <param name="volume">音量(0~100)</param> /// <param name="track">対象の音声トラック</param> public void SetSoundVolume(int volume, ESoundTrack track = ESoundTrack.BGM1) => cSound.SetVolume(ref volume, track);
// 音声 /// <summary> /// サウンドを再生します。 /// </summary> /// <param name="soundId">サウンドID(snd0.wav なら 0, snd1.mp3 なら 1)</param> /// <param name="loop">ループ再生するかどうか (SEトラックでは常に無視されます)</param> /// <param name="track">対象の音声トラック</param> public void PlaySound(int soundId, bool loop = false, ESoundTrack track = ESoundTrack.BGM1) => cSound.Play(soundId, loop, track);
public void SetVolume(ref int volume, ESoundTrack track) { var decibel = 20f * Mathf.Log10(volume * 0.01f); SetVolume(decibel, track); }