Disable Batching Static for Scene Elements

Static Batching and Runtime Baking

Unity’s Static Batching system combines meshes at build time and when entering Play Mode. Unfortunately, the combined meshes are not readable at runtime — which makes them incompatible with Unity’s UpdateNavMeshDataAsync API.

If your scene uses Static Batching, you may see errors like:

“Source mesh Combined Mesh (root: scene) does not allow read access.”


Why it happens

  • The Runtime NavMesh Baker (like Unity’s runtime API) needs access to the underlying mesh data.

  • Static Batching produces optimized combined meshes that are non-readable, so they cannot be baked into a runtime navmesh.


Solutions

  1. Disable Static Batching for geometry that contributes to the runtime navmesh:

    • Select the geometry in your scene (or its parent).

    • In the Inspector, click the Static dropdown.

    • Uncheck Batching Static.

    • When prompted, confirm “Yes” to disable batching for all child objects.

  2. Use colliders instead of render meshes (recommended).

    • DynamicNavMeshSurface defaults to Physics Colliders collection mode in v1.3.0.

    • This avoids the batching issue entirely, since colliders remain accessible at runtime.

  3. Third-party mesh combine systems

    • If you still need to merge meshes for performance, consider a third-party mesh combine tool that keeps meshes readable.

    • These can provide the same draw-call benefits while staying compatible with runtime baking.


Best Practice

For most projects:

  • Let the renderer batching happen via SRP Batch or GPU Instancing.

  • Use primitive colliders for navmesh baking.

  • Avoid Unity’s Static Batching on any geometry that should contribute to runtime navmeshes.

Last updated