Several Unity plugins like Parse, FMOD, UMP (Universal Media Player), ZFBrowser or Embedded Browser are using native threads. It’s an issue when a plugin ends up attaching a native thread to the runtime, which then does blocking calls to the OS. This means Unity can’t interrupt that thread for the debugger (or domain reload) and hang.
For FMOD, there is a workaround, you can pass FMOD_STUDIO_INIT_SYNCHRONOUS_UPDATE initialization flag to disable asynchronous processing and perform all processing on the main thread.
Unfortunately, I have no idea where in my code I should be setting up the FMOD_STUDIO_INIT_SYNCHRONOUS_UPDATE flag…
So if that is the issue :
How do I change that flag during initialization (when is that exactly?)?
What is the right way to pass the value using the FMOD.Studio.System.initialize()?
And if the issue is something different, any suggestions/help?
Wow, thanks for this question and answer here. I’ve lost a whole day just trying to find what was wrong, until I realized we only had this issue on scenes where there was music going on. Changing this flag solved the problem for us too.