FMOD Banks Not Loading in Unity Addressables Build - How to Fix

Your FMOD events work in the Unity Editor, but in a development or release player build you hear silence, fallback, or the log shows ERR_FILE_NOTFOUND, could not load bank, or bank load returns FMOD_ERR_FILE_NOTFOUND. You are also using Addressables for other content, and it is easy to end up with wrong paths, late files, or initialization order bugs.

This article separates file-based bank loading from memory bank loading, fixes the usual Addressables + FMOD interaction, and gives you a verification checklist.

The problem

Typical symptoms:

  • Banks load in Editor Play Mode but not in Windows/Mac/Linux/Android/iOS builds
  • Logs mention missing bank, file not found, or FMOD::System::loadBankFile failures
  • You moved banks into Addressables (or only ship them through remote groups) and FMOD still looks under StreamingAssets
  • Audio starts working only after a scene reload or a second attempt—often an order bug

Why this happens

  1. Path mismatch – Editor resolves a relative path; the player resolves a different working directory or case-sensitive path.
  2. StreamingAssets layout – FMOD expects banks under a configured subfolder (for example StreamingAssets root or a dedicated folder). Your build did not copy banks there.
  3. Addressables-only banks – You packaged .bank files as Addressables, but runtime code still calls loadBankFile with a disk path that does not exist yet.
  4. Initialization orderRuntimeManager (or your wrapper) loads banks before Addressables.InitializeAsync finishes, so your code never reaches the memory load branch.
  5. Wrong platform bank – Desktop bank in an Android build, or Master.strings.bank missing alongside Master.bank.
  6. Strip or compression – Rarely, aggressive build steps move or omit StreamingAssets content; more often the file was never included in the player data payload.

Fix 1 - Confirm banks exist in the player (fast)

  1. Make a Development Build with autoconnect profiler optional; enable Development Console or use ADB logcat / Xcode console.
  2. After install, inspect the build’s data folder (platform-dependent) and verify .bank files exist where FMOD expects them if you use file loading.
  3. If no banks are on disk, your issue is deployment, not FMOD Studio authoring.

Fix 2 - Simplest stable layout (banks in StreamingAssets)

For many projects, the least fragile approach is:

  1. Keep FMOD bank output pointed at Assets/StreamingAssets (or the subfolder your FMOD Unity Integration docs recommend).
  2. Let Unity copy StreamingAssets into the player automatically.
  3. Use Addressables for gameplay assets, not for the primary bank files, until you intentionally implement memory loading (Fix 3).

Verification: In a player build, confirm .bank files sit under the build’s StreamingAssets mirror and loadBankFile paths match exact relative names (watch spaces and case on non-Windows targets).

Fix 3 - Banks inside Addressables (memory load path)

If you must load banks from Addressables:

  1. Ensure .bank entries are built into a group that your first-boot code loads.
  2. At runtime: await Addressables.InitializeAsync() (or equivalent) before any FMOD bank load that depends on Addressables.
  3. Load the bank object as TextAsset or raw bytes (per your Addressables setup).
  4. Call the FMOD Unity API path that loads from memory (for example loadBankMemory / LoadBank overload that accepts byte[]—use the exact signature from your integration version docs).
  5. Load Master.strings.bank before or with Master.bank according to FMOD’s strings bank rules for your project.

Pro tip: Log one line after each loadBank with bank name and FMOD.RESULT; remove spam before shipping.

Fix 4 - Initialization order checklist

Use a single bootstrap routine that runs early (first scene or a persistent [RuntimeInitializeOnLoadMethod] hook):

  1. Initialize Addressables if you depend on them for banks or any prerequisite asset.
  2. Initialize FMOD core / RuntimeManager as required by your integration version.
  3. Load banks (file or memory).
  4. Start gameplay events only after banks report loaded.

If you load banks from Start() on ten different objects, you will eventually race yourself—centralize.

Fix 5 - Platform and bank build settings

  1. In FMOD Studio, build banks for the target platform (desktop vs mobile vs console).
  2. Confirm both .bank and .strings.bank (if used) are included.
  3. In Unity, confirm Scripting Backend and architecture match what FMOD’s plugins support for that target.

Alternative fixes

  • Remote Addressables – If banks download late, defer audio that needs them or ship a minimal local bank for boot/menu.
  • Encrypted or split packages – Ensure your copy step runs before FMOD load; some store pipelines unpack asynchronously.
  • Duplicate RuntimeManager – Only one Studio Listener / manager pattern per scene unless your integration explicitly supports multiples; duplicates can hide errors behind double init.

Prevention

  • Document where banks live for each platform in your README or Notion runbook.
  • Add a smoke test scene that LoadBank + plays one test event on a cheat key in Development builds.
  • Keep FMOD Studio bank build output and Unity import path in CI notes so a path change does not silently drop files.

Verification

After your fix:

  1. Clean build (delete Library only if your team accepts the cost; at minimum delete Builds/ output folder).
  2. Produce a non-Editor player build.
  3. Launch offline (no Unity Editor, no AssetDatabase).
  4. Confirm no ERR_FILE_NOTFOUND for banks in the log.
  5. Trigger one 2D and one 3D event if you use spatialization—both should audition correctly.

Related links

FAQ

Should I put FMOD banks in Addressables at all?
Only if you have a clear reason (remote content, large optional packs). StreamingAssets is the default happy path for core audio.

Does IL2CPP change anything?
It can change timing and stripping behavior; always test IL2CPP player builds, not just Mono Editor.

Can I fix this only by changing FMOD Studio?
Rarely. Most failures are Unity deployment and call order, not the FMOD project file.


If this fixed your build, bookmark this page for the next time someone moves banks into a new Addressables group without updating the load path. Share it with anyone shipping Unity + FMOD on a small team.