Setting Wwise States in Unity

Wwise States are a type of Game Sync that allow us to make changes to audio based on predefined global states that are assigned to audio objects and then are triggered in-game. States can be used to change mix settings in response to an event happening in-game for example. In a music system containing musical segments, States are preferred over Switches, since they act on a global scope. To learn more about game object scopes, read the documentation article here: Understanding Global and Game Object Scope.

In this quick tutorial we’ll learn how to create States in the Wwise authoring tool and how to trigger them in Unity.

Creating States in the Wwise Authoring Tool

To create Wwise States switch to the Game Syncs tab, right click on a States Work Unit and select New Child->State Group:

Creating a Wwise State Group
Creating a Wwise State Group

In this example I will give the State Group the name PlayerState. Now to create States right click on the State Group we just created and select New Child->State:

Creating a new Wwise State
Creating a new Wwise State

Create a few States and switch to the States tab of a sound in the Actor-Mixer Hierarchy:

Adding a State Group to a Sound
Adding a State Group to a Sound

Now we can change the sound properties for each individual state:

Wwise States inside a sound object
Wwise States inside a sound object

Try to change some values for your States, generate the SoundBanks and switch over to Unity.

Setting a Wwise State by using the Ak State component

A very easy method to trigger a State is to use the Ak State component provided by the Wwise integration plugin. It works similar to the Ak Switch component used in the Wwise Switches in Unity tutorial. In this example we want to trigger a State when the player enters a trigger collider. Attach the Ak State component into the GameObject containing the collider:

Wwise Ak State component in Unity
Wwise Ak State component in Unity

The Ak State component has following properties:

  • Trigger On: A list of Unity Events that will trigger the State.
  • Use Other Object: Defines if the State 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 State. In the example above we want to trigger the State 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 State the will be triggered.

Check the Use Other Object box, attach the Ak Trigger Enter component to the GameObject, drag the Player GameObject to the Trigger Object field. That’s it!

Setting a Wwise State by using AkSoundEngine.SetState

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

 AkSoundEngine.SetState(string stateGroup, string stateValue);

stateGroup is the State Group created in the Wwise Authoring tool and stateValue the State we want to set. Since States are applied on a global scope and not on individual GameObjects like Switches, there is no need to pass a GameObject as an argument.

Setting a Wwise State by using the AK.Wwise.State Type in Unity

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

[SerializeField]
private AK.Wwise.State myState;

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

Wwise State Type in Unity's inspector
Wwise State Type in Unity’s inspector

To set the State value simply call the SetValue method of the State type:

myState.SetValue();

↑ To the Top