Setting Wwise Switches in Unity

Switches are a type of Game Sync that allow us to define variations for a specific sound object. They are used to implement multi-surface footsteps sounds for example, by switching to the correct set of sounds depending on the surface the player is walking on. In contrast to States, Switches are applied on a local game object scope, that means that the Switch is applied on a particular game object and can exist for many instances of individual game objects. In this tutorial we will create switches in the Wwise authoring tool and learn to set them in Unity by using the components provided by the Wwise integration plugin and by writing C# code.

Creating Switches in the Wwise Authoring Tool

Start by right clicking on a Work Unit in the Actor-Mixer Hierarchy and selecting a Switch Container:

Switch Container creation in Wwise
Switch Container creation in Wwise

After that you can insert individual sound objects inside the Switch Container. In this example I added several random containers with footsteps sounds in different terrain settings:

Switch Container Footsteps example in Wwise
Switch Container Footsteps example in Wwise

Switch to Game Syncs Tab and add a Switch Group to your desired Work Unity. For each Switch, add a child Switch to the Switch Group:

Switch Group creation in Wwise
Switch Group creation in Wwise

Go back to the Switch Container and select the Switch Group you created in the General Settings in the Group field:

Switch Group selection in Wwise
Switch Group selection in Wwise

Make sure to also define a Default Switch to avoid any errors in the game engine.

Now you can assign the Sound Objects inside your Switch Container to the Switches in the Switch Group by dragging and dropping the objects from the Contents Editor to the Switches (Assigned Objects) on the right:

Assign Sound Objects to Switches in Wwise
Assign Sound Objects to Switches in Wwise

Finally create a new Event and assign the Switch Container created in the first place as a target of the play action:

Wwise Event with Switch Container
Wwise Event with Switch Container

As a last step add the Event to your desired SoundBank (don’t forget to generate the banks!).

Setting a Wwise Switch using the Ak Switch component in Unity

Supposing we want to set a Switch when entering a trigger collider, we Insert the Ak Switch component into your GameObject containing the collider:

AKSwitch component in Unity's inspector
AKSwitch component in Unity’s inspector

The AKSwitch component has following properties:

  • Trigger On: A list of Unity Events that will trigger the Switch.
  • Use Other Object: Defines if the Switch applies to the current or another GameObject. Make sure to check this setting and use the appropriate component provided by the Wwise integration if you want another GameObject to trigger the Switch. In the example above we want to trigger the Switch when the player enters the trigger collider. You would want to place the Ak Trigger Enter component in your collider’s GameObject and drag the player GameObject into the Trigger Object field.
  • Name: The name of the Switch the will be triggered.

Since we want the player to trigger the Switch we add the Ak Trigger Enter component to the GameObject containing Ak Switch and attach the player GameObject to the Trigger Object Field:

Ak Switch & Ak Trigger Enter components in Unity
Ak Switch & Ak Trigger Enter components in Unity

Make sure to have the option Use Other Object selected and now the Switch should successfully be set when entering the box trigger collider.

Setting a Wwise Switch using AkSoundEngine.SetSwitch in Unity

We can use the SetSwitch method of the AkSoundEngine namespace to directly set a Switch in code. The code looks like this:

AkSoundEngine.SetSwitch(string switchGroup, string switchState, GameObject gameObject);

switchGroup is the Switch Group created in the Wwise authoring tool. switchState the Switch we want to set. gameObject refers to the GameObject in which we post the Event playing the Switch Container.

Setting a Wwise Switch using the AK.Wwise.Switch Type in Unity

Alternatively, we can use the Wwise.Switch Type to easily set the Switch in code. To do this, declare the Switch Type property first:

[SerializeField]
private AK.Wwise.Switch mySwitch;

You can now select the appropriate Switch from the inspector window in Unity:

Wwise Switch Type in Unity
Wwise Switch Type in Unity

To set the Switch value simply call the SetValue method of the Wwise.Switch Type:

mySwitch.SetValue(this.gameObject);

Make sure to pass the GameObject that will post the Event as an argument in the method. That’s it!

↑ To the Top