質問

I'm trying to use C# api for FMOD Designer and run an interactive music system, but when I call musicSystem.getCues(...) my app crashes.

I call it like this :

FMOD.MUSIC_ITERATOR iter = new FMOD.MUSIC_ITERATOR();
ERRCHECK(musicSystem.getCues(ref iter, musicCueName)); // Crash!

if (iter.value != null) // iter.value will be null if the cue was not found
{
    FMOD.MusicPrompt prompt = null;
    ERRCHECK(musicSystem.prepareCue((uint)iter.value.ToInt32(), ref prompt));
    musicCues.Add(prompt);
}

but I can use prepareCue and trigger the cue by directly using cue IDs.

When I checked the C# wrapper classes I saw something suspicious that the FMOD.MUSIC_ITERATOR passed by a ref directly to C api, the FMOD.MUSIC_ITERATOR has another type def inside it that will be filled in the native code. This question also asked in FMOD forum but no response.

役に立ちましたか?

解決

Found my solution, I was iterating through a generic List of string containing music cue names to get cue iterator, a List musicCueNames, like this :

ERRCHECK(musicSystem.getCues(ref iter, musicCueNames[i])); // Crash!

I changed it to something like this :

string cueName = musicCueNames[i];
ERRCHECK(musicSystem.getCues(ref iter, cueName)); // Works!

and now everything works properly, but don't know exactly why.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top