Quick answer: BuildAssetBundleOptions.ForceRebuildAssetBundle for clean rebuild. Or delete Library/BuildCache.

Update a texture, rebuild bundle. Player still loads old texture. Build cache served stale entry.

The Fix

BuildPipeline.BuildAssetBundles(
    outPath,
    builds,
    BuildAssetBundleOptions.ForceRebuildAssetBundle |
    BuildAssetBundleOptions.ChunkBasedCompression,
    BuildTarget.StandaloneWindows64
);

// Or nuke cache
Directory.Delete("Library/BuildCache", true);

ForceRebuild bypasses cache. Manual cache clear works too. CI builds: pre-build clean to guarantee fresh.

Verifying

Bundle bytes change. Player loads updated texture. Without force: same hash returned.

“ForceRebuild. Or clear cache.”

Related Issues

For AssetBundle MP4, see MP4. For AssetBundle encryption, see encryption.

Force rebuild. Fresh.