@@ -20,6 +20,7 @@ public class AudioMixerVolumesController
20
20
private readonly AudioMixer audioMixer ;
21
21
private readonly string [ ] allExposedParams ;
22
22
private readonly Dictionary < string , float > originalVolumes = new ( ) ;
23
+ private readonly HashSet < string > mutedGroups = new ( ) ;
23
24
24
25
public AudioMixerVolumesController ( AudioMixer audioMixer )
25
26
{
@@ -36,8 +37,14 @@ public void MuteGroup(AudioMixerExposedParam groupParam)
36
37
if ( exposedParam != groupParamString )
37
38
continue ;
38
39
39
- audioMixer . GetFloat ( groupParamString , out float originalVolume ) ;
40
- originalVolumes [ groupParamString ] = originalVolume ;
40
+ // Only store the original volume if this group hasn't been muted before
41
+ if ( ! mutedGroups . Contains ( groupParamString ) )
42
+ {
43
+ audioMixer . GetFloat ( groupParamString , out float originalVolume ) ;
44
+ originalVolumes [ groupParamString ] = originalVolume ;
45
+ mutedGroups . Add ( groupParamString ) ;
46
+ }
47
+
41
48
audioMixer . SetFloat ( groupParamString , MUTE_VALUE ) ;
42
49
break ;
43
50
}
@@ -52,7 +59,11 @@ public void UnmuteGroup(AudioMixerExposedParam groupParam)
52
59
if ( exposedParam != groupParamString )
53
60
continue ;
54
61
55
- audioMixer . SetFloat ( groupParamString , originalVolumes [ groupParamString ] ) ;
62
+ if ( mutedGroups . Contains ( groupParamString ) )
63
+ {
64
+ audioMixer . SetFloat ( groupParamString , originalVolumes [ groupParamString ] ) ;
65
+ mutedGroups . Remove ( groupParamString ) ;
66
+ }
56
67
break ;
57
68
}
58
69
}
0 commit comments