主界面添加,许多bug修复。祝贺黑盒1如期开始
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.Audio;
|
||||
|
||||
public class audioSettingsPreloader : MonoBehaviour
|
||||
{
|
||||
[Header("Audio Mixer")]
|
||||
public AudioMixer mainMixer;
|
||||
|
||||
[Header("Exposed Parameters (Must match Editor)")]
|
||||
public string masterParam = "Master_Vol";
|
||||
public string noteHitParam = "noteHit_sfx_Vol";
|
||||
public string musicInGameParam = "inGameMusic_Vol";
|
||||
public string musicOutGameParam = "outGameMusic_Vol";
|
||||
public string uiInterationParam = "button_sfx_Vol";
|
||||
|
||||
// PlayerPrefs keys (Must match audioMerger.cs)
|
||||
const string PlayerPrefKey_EnableGlobalMute = "EnableGlobalMute";
|
||||
const string Key_MainVol = "Volume_Main";
|
||||
const string Key_NoteHitVol = "Volume_NoteHit";
|
||||
const string Key_MusicInGameVol = "Volume_MusicInGame";
|
||||
const string Key_MusicOutGameVol = "Volume_MusicOutGame";
|
||||
const string Key_UiVol = "Volume_UI";
|
||||
|
||||
void Start()
|
||||
{
|
||||
ApplyAudioSettings();
|
||||
}
|
||||
|
||||
public void ApplyAudioSettings()
|
||||
{
|
||||
if (mainMixer == null)
|
||||
{
|
||||
Debug.LogWarning("[audioSettingsPreloader] Main Mixer is not assigned!");
|
||||
return;
|
||||
}
|
||||
|
||||
// 1. Check Global Mute first
|
||||
bool isMuted = PlayerPrefs.GetInt(PlayerPrefKey_EnableGlobalMute, 0) == 1;
|
||||
|
||||
if (isMuted)
|
||||
{
|
||||
// Set Master to -80dB immediately
|
||||
mainMixer.SetFloat(masterParam, -80f);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Apply normal Master volume
|
||||
ApplyVolume(Key_MainVol, masterParam);
|
||||
}
|
||||
|
||||
// 2. Apply other volumes
|
||||
ApplyVolume(Key_NoteHitVol, noteHitParam);
|
||||
ApplyVolume(Key_MusicInGameVol, musicInGameParam);
|
||||
ApplyVolume(Key_MusicOutGameVol, musicOutGameParam);
|
||||
ApplyVolume(Key_UiVol, uiInterationParam);
|
||||
|
||||
Debug.Log($"[audioSettingsPreloader] Audio settings applied. Muted: {isMuted}");
|
||||
}
|
||||
|
||||
void ApplyVolume(string prefKey, string mixerParam)
|
||||
{
|
||||
if (string.IsNullOrEmpty(mixerParam)) return;
|
||||
|
||||
float linearValue = PlayerPrefs.GetFloat(prefKey, 1.0f);
|
||||
float clampedValue = Mathf.Clamp(linearValue, 0.0001f, 1.0f);
|
||||
float dB = Mathf.Log10(clampedValue) * 20f;
|
||||
|
||||
mainMixer.SetFloat(mixerParam, dB);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user