Technical Details
Unity’s AI Navigation package does support runtime navmesh baking internally, but it exposes only a very low-level API. There is no editor tooling, no service layer, and no practical workflow for most teams.
The Runtime NavMesh Baker wraps these APIs in a structured, service-based system with intuitive inspectors, menu items, events, and samples — so designers, programmers, and technical artists can all configure runtime baking without writing custom infrastructure.
Core Features
Coordinator-First Workflow
The BakerCoordinator component is the main entry point.
Owns a NavMeshBakeProfile (asset with all settings) and a Center Target (e.g., player or camera).
Automatically attaches and manages the underlying NavMeshBakerService.
Service-Based Architecture
NavMeshBakerService manages:
Dirty queueing and async bake scheduling
Continuous AABB baking, Grid Cell streaming, or One Shot baking
Agent expansion, seam link building, and concurrency control
Normally hidden from end users — accessed via the Coordinator.
Dynamic Surfaces
DynamicNavMeshSurface wraps Unity’s
NavMeshSurface
.Registers automatically with the Coordinator (optional auto-register).
Provides inspector buttons to mark itself dirty, register/unregister, and ping its surface.
Profiles
NavMeshBakeProfile ScriptableObjects hold all bake parameters:
Bake mode (Continuous AABB, Grid Cells, One Shot)
Bounds sizes, cell dimensions, hysteresis, and rebake intervals
Agent types, default area, and area costs
Concurrency limits and seam-link options
Multiple profiles can be created and swapped quickly.
Event Hooks
BakerEvents exposes static events:
OnBakeStarted
,OnBakeCompleted
,OnBakeFailed
OnCombinedBakeStarted
,OnCombinedBakeCompleted
OnOneShotBakeStarted
,OnOneShotBakeCompleted
(new in 1.4.0)
Ideal for gameplay hooks (e.g., spawning AI when the navmesh is ready).
Spawner Integration (new in 1.4.0)
NavMesh Placement Policies on
SpawnEntry
:Require → spawn only once a valid NavMesh exists (deferred if needed)
Prefer → spawn immediately; agent enables once navmesh is available
Ignore → place regardless of navmesh state
Deferred Placement Queue ensures Require-policy spawns retry until successful.
Spawn Hints (
EnemySpawnHintPoint
components) let designers author preferred spawn anchors with per-hint rules.
Seamless AI Integration
Works directly with Unity’s built-in
NavMeshAgent
,NavMeshQuery
, andNavMesh.SamplePosition
.Agents automatically re-path when new bakes complete.
Non-Destructive Workflow
Combine static editor-baked navmeshes with runtime baking.
Useful for hybrid projects: static base levels + procedural/dynamic zones.
System Architecture (At a Glance)
[ Unity NavMesh System (AI Navigation package) ]
▲
│ (low-level runtime APIs: NavMeshData, UpdateNavMeshDataAsync)
│
[ NavMeshBakerService ]
- Centralized runtime baking logic
- Manages DynamicNavMeshSurfaces
- Async scheduling, dirty queues, perf metrics
- Dispatches BakerEvents (per-surface, combined, one-shot)
▲
│
[ BakerCoordinator (MonoBehaviour) ]
- Primary entry point for users
- Owns NavMeshBakeProfile + Center Target
- Auto-registers child DynamicNavMeshSurfaces
- Provides friendly methods: StartBaking, BakeAllNow, RunOneShotBake
▲
│
[ Inspector & Editor Tooling ]
- Quick Setup menu, asset creators, Bake Monitor window
- Dynamic Surface inspector (mark dirty, register/unregister)
- Spawn Hints inspector (new in 1.4.0)
This layered design separates the runtime engine (Service) from the editor/user entry points (Coordinator, inspectors, menus), making it both production-ready and approachable.
Dependencies
Unity 2022.3 LTS or newer
AI Navigation (
com.unity.ai.navigation
) – required core packageOptional / samples only:
TextMesh Pro – used in sample UIs
Cinemachine – used in sample scenes for player camera control
Last updated