Unity logs a Wwise bank load failure when the runtime cannot find the .bnk file, receives data from the wrong platform folder, or calls LoadBank before the sound engine is ready. The failure often shows as AK_Fail, AK_BankNotFound, or a generic LoadBank error even though banks exist in your project tree.
This guide walks the fastest safe path: confirm initialization order, then platform path parity, then packaging and Addressables staging.
Problem summary
Typical symptoms:
AkBankManagerorAkSoundEngine.LoadBankreturns failure in Player build while Editor works- Audio is silent after scene load with bank-load errors in the Unity console
- Logs reference a bank name that exists under
GeneratedSoundBanksbut not under the active platform subfolder - Issue appears after retargeting build platform, upgrading the Wwise Unity integration, or moving banks into Addressables
Root causes
-
Init order
Code triggersLoadBankbeforeAkInitializer/AkSoundEnginehas completed initialization for the current platform. -
Wrong platform subdirectory
Banks were generated for Windows but the Android build still points at the Windows folder, or vice versa. -
Path and casing drift
Bank path uses a mixed-case folder name that works in Editor on Windows but fails on case-sensitive device filesystems. -
Banks not copied into the Player
GeneratedSoundBankscontent is not included in StreamingAssets, or Addressables bundles omit the.bnkfiles. -
Multiple bank roots
DuplicateGeneratedSoundBankstrees (old branch path vs new) and runtime resolves the empty or stale one.
Fix (fast path)
Step 1: Serialize initialization order
- Ensure a single startup path owns audio bootstrap: either the default Wwise Global / AkInitializer in the first loaded scene, or your own script that mirrors the same sequence.
- Do not call
LoadBankfromAwakeon objects that may run beforeAkInitializerfinishes. PreferStart, a frame-delayed callback, or an explicit event fired afterAkSoundEnginereports ready (per your integration version’s recommended hook). - In custom boot flows, call
AkSoundEngine.Initonly through the integration’s supported path; avoid double-init or init-after-load patterns unless your Audiokinetic docs explicitly allow them.
Step 2: Verify GeneratedSoundBanks layout
- In Wwise, confirm banks are generated for the target platform you are testing (not only Windows if you are building for Android or iOS).
- In Unity, open your
GeneratedSoundBanks(or project-specific) folder and confirm a platform-named subdirectory (for example Android, iOS, Windows) contains the.bnkand required.wemassets for that build. - Align Wwise Project Settings platform output with Unity’s active build target before regenerating banks.
Step 3: Match bank names and load calls
- Compare the string passed to
LoadBank(or bank name inAkBankManager) with the exact bank name in Wwise; avoid stale renamed banks. - If you use decoded vs reference bank settings, ensure load paths match how banks were generated (memory vs streaming expectations).
Step 4: Player build staging
- If your integration expects banks under StreamingAssets, confirm the post-generation copy step runs in CI and that
.bnkfiles appear in the built Player’s data folder for the target platform. - If banks live in Addressables, confirm the
.bnkassets are marked addressable, included in the correct group, and loaded before gameplay code requests events from that bank. Resolve path URLs so the file stream opens on device, not only in Editor.
Step 5: Case-sensitive and path-length checks
- Normalize folder names to the same casing as on disk; avoid string-concat paths that assume Windows-only behavior.
- On consoles or strict mobile paths, shorten overly deep bank output paths if your pipeline hits path limits.
Verify
- Clear console, enter Play Mode or deploy a development build, trigger the first
LoadBank, and confirm noAK_Failor bank-not-found lines in the first 5 seconds of audio boot. - Use the Wwise Profiler (or authoring tool capture) and confirm the bank appears loaded with expected media IDs.
- Repeat on the lowest hardware target you ship; Editor-only success does not close the issue.
Alternative fixes
- Async load race: If using async bank load APIs, gate gameplay audio triggers on load-complete callbacks rather than frame counts.
- Scene reload: After domain reload or scene teardown, ensure banks are unloaded and reloaded in a defined order to avoid duplicate load or stale handles.
- IL2CPP stripping: If using unusual reflection around Wwise wrappers, check that required types are preserved per Unity IL2CPP link.xml guidance from your Wwise Unity package version.
Prevention
- Add a small smoke scene in CI that loads one bank and posts one event; fail the job on
AK_Fail. - Pin Wwise authoring, project data, and Unity integration versions in release notes so bank regeneration stays reproducible.
- Treat
GeneratedSoundBankslike code: one canonical output path per branch, no manual copies into randomAssetsfolders.
FAQ
Editor works but device fails — what should I check first?
Platform subdirectory under GeneratedSoundBanks and case-sensitive paths on device. Then Addressables or StreamingAssets inclusion.
Is this related to FMOD bank issues?
The packaging pattern is similar (generated banks, platform folders, CI staging). See FMOD Studio Bank Version Mismatch in CI Builds - Cache Cleanup and Bank Manifest Validation Fix for parallel CI discipline; Wwise-specific steps above still apply.
Where is the official reference?
Use the Audiokinetic Wwise SDK documentation for LoadBank, initialization, and Unity integration notes for your SDK version.
Related links
- FMOD Studio Bank Version Mismatch in CI Builds - Cache Cleanup and Bank Manifest Validation Fix
- Unity Cloud Diagnostics Symbol Upload Failed - dSYM and ProGuard Mapping Pipeline Fix (CI artifact discipline adjacent to audio staging)
Bookmark this page if you ship Wwise on more than one platform; init and path bugs tend to reappear after integration upgrades.