Hi folks, we're having an issue using Wwise callbacks in order to trigger Unity events. We have some cases where the programmer is receiving the Custom Cues I've added to the music segments successfully, and other cases where they are not receiving them, even though I am adding the custom cues in exactly the same way to the music segments. One example where it's not working is where we want to cut to black on a particular part of the currently playing music track. I've added a Custom Cue to the music segment at the exact moment we want to cut to black, but it's simply not being received. In this case the music segment is being triggered by changing the state on the currently playing Music Switch Container. In the cases where the Custom Cues are working, these music segments are being triggered directly from an event Play action, not by changing state on an already playing Music Switch container.
I've asked the programmer to add some comments here as well, as he's experiencing the issue from a programmer's perspective whereas I'm approaching it from a Wwise authoring perspective.
Programmer: "We are trying to get user cues to trigger the game’s title reveal sequence. I have a test script setup as follows:"
using UnityEngine;
public class MusicSyncTest : MonoBehaviour
{
private uint _songId;
public string SongEvent;
public void StartTest()
{
uint eventFlags = (uint) AkCallbackType.AK_MusicSyncUserCue | (uint) AkCallbackType.AK_EndOfEvent;
Debug.Log($"Starting audio event: {SongEvent}");
_songId = AkSoundEngine.PostEvent(SongEvent, gameObject, eventFlags, (cookie, type, info) =>
{
if (info is AkEventCallbackInfo)
{
OnSongEnd();
}
if (info is AkMusicSyncCallbackInfo syncInfo)
{
OnUserCue(syncInfo.userCueName);
}
}, null);
}
public void StopTest()
{
AkSoundEngine.StopPlayingID(_songId);
}
private void OnUserCue(string cue)
{
Debug.Log($"Cue hit: {cue}");
}
private void OnSongEnd()
{
Debug.Log("Song ended");
}
}
Programmer: "We use this same technique during another section of the game, where characters sing along to the radio and the lines and animations are triggered by user cues setup in Wwise (so we know this technique works)In this case, as soon as the event is started, the OnSongEnd event is triggered almost immediately even though I can still hear the music playing. It's almost like Wwise uses this event to start a new 'internal' event and then reports to Unity that the original event is done. If this is the case, it would be great if I could subscribe to that 'internal' event instead."
I've included some images for reference, both from Wwise and from the Unity console.
https://drive.google.com/file/d/11xUD7qJ9DUiP_Tcx70MrwyIKrJUSF3Ks/view?usp=share_link
https://drive.google.com/file/d/1z0eEd2jwFdGu_yYtFazUmpWwzGveQxzX/view?usp=share_link
https://drive.google.com/file/d/1HmcD8K-49Zlnwyyopbg58yDFfm1bdqX0/view?usp=share_link
I hope somebody out there in the community has some suggestions of why it's working in some cases but not in others.
Thanks in advance!