|
Post by Rygaar on Mar 9, 2015 6:58:07 GMT
I want a uGUI Toggle to mute / unmute my SFX bus. I have a Slider to control SFX volume.
I have another set of controls for Music.
I thought I could use Master Audio to implement this functionality without having to code anything, but have hit a few snags.
Q1. I added "Event Sounds" to the Toggle, and was hoping to find a toggled/untoggled event in the "Event to Activate" list. It doesn't seem that there is one. Am I missing something?
Q2. I wish to persist all these settings (mute state and volume, for SFX and Music separately). "Persistent Settings Control" seemed to be the way to go - but it looks like this only has volume related settings, no mute state. Am I missing something?
In general, is there an elegant way to achieve what I want without coding?
thanks
|
|
|
Post by DarkTonic Dev on Mar 9, 2015 16:29:56 GMT
Q1, not sure if I missed something or if there's no API function for a Toggle (sounds like a new control to me that wasn't in the beta 4.6 I coded to). I'll check.
For the volume.
1) You can use 0 and 1 volume for mute / unmute, but that makes you lose any custom volume setting, so that's probably undesirable.
2) On Global Control (action type) there's a Mute Everything and Unmute everything. It sounds like you want more fine control, right?
3) If you are only using one bus, you could mute the bus...
|
|
|
Post by Rygaar on Mar 9, 2015 21:34:47 GMT
Yes, I want to be able to set the volume for the SFX bus and the music separately, and persist those settings. I also want to be able to mute each, and persist the mute state - keeping the volume where it was for when it is unmuted.
Note I have created a single bus for all my SFX and am using a playlist for the background music. When playing around I did use the Bus Control mute and Playlist Control mute, which worked fine (apart from the issue with events from the Toggle). I then noticed the Persistent Settings, which handled persisting my volume settings from a slider, but was missing the ability to persist mute.
|
|
|
Post by Rygaar on Mar 10, 2015 0:20:29 GMT
Note I am using unity 5.
|
|
|
Post by DarkTonic Dev on Mar 10, 2015 5:27:04 GMT
I have added the event "Toggle (uGUI)" which can now have actions, in the next version. Hooking up a persistent mute will be more of a chore however, so it won't be done in a couple days or anything.
Even if I were to add that, there will still be an issue that the checkbox will not always reflect the current mute status when you come back to it from a different Scene. Due to the paradigm of allowing multiple actions per event, it doesn't really make sense to auto (or even optionally) hook that up. A separate script would need to set that.
So, you might be better off making your own script for now unless we figure that part out.
I'm thinking it may be better to make a "mute/unmute Unity Audio Mixer Group" script that only does that and can detect the mute state of the Group? Since you're using Unity 5, you should be routing all your SFX to a single top-level Mixer Group I would think? Although I can't seem to find the API for that (mute AudioMixerGroup). Maybe there is no API for that? That would be really weird. I've posted a thread to Unity forums to try and find out.
|
|
|
Post by Rygaar on Mar 10, 2015 21:33:23 GMT
Yes I have routed the SFX bus to a Mixer Group.
Understood that I will have to script syncing the UI to the state. I'll script the mute persistence for now - but seems like a fairly common use case so should be worth adding to Persistence Settings.
Once I pickup your new build with the Toggle support I will put it altogether and see how it goes.
thanks
|
|
|
Post by DarkTonic Dev on Mar 10, 2015 22:36:49 GMT
I agree. I'll put it on the roadmap near the top.
|
|
|
Post by Rygaar on Mar 12, 2015 9:55:52 GMT
Picked up the new version and a few issues.
1. "Playlist Control" has "Toggle Mute" which allows me to mute / unmute the music using the new Toggle event - this is great. Unfortunately "Bus Control" doesn't have the Bus Command "Toggle Mute", so I can't mute/unmute the SFX bus via the Toggle event.
2. Persistent Settings Control->Set Bus Volume doesn't seem to be persisting. I have the action attached to a Slider Changed event, and it works while the game is running, i.e. I can adjust the SFX volume by moving the slider. But when I exit and restart it is back to full volume, never remembering the last value. I also note that PersistentAudioSettings.GetBusVolume("SFX") is always returning null at startup, even though I have adjusted it in the previous run. On a good note, Persistent Settings Control -> Set Music Volume is working perfectly. It's persisting across restarts and giving me the correct value from PersistentAudioSettings in Start, thus allowing me to correctly initialise the slider value in the UI.
|
|
|
Post by DarkTonic Dev on Mar 13, 2015 0:03:59 GMT
Ok thanks for letting me know. In the next couple days I should be able to fix both of these hopefully.
|
|
|
Post by DarkTonic Dev on Mar 13, 2015 23:56:01 GMT
I fixed Persistent Bus (and Group) volume. Those only persisted until you exit the app or hit stop. Now they're good. The next update will have it.
|
|
|
Post by Rygaar on Mar 19, 2015 8:39:25 GMT
Thanks for addressing those issues quickly. Confirm all working now, with the mute persistence and ui sync done via script.
cheers
|
|
|
Post by DarkTonic Dev on Mar 19, 2015 16:20:09 GMT
No problem.
|
|