NavMeshBakeProfile
Runtime Navmesh Baker — Bake Profile
The Bake Profile (ScriptableObject) configures how the runtime baker chooses bounds, collects sources, throttles work, and stitches seams. Assign a profile to your BakerCoordinator
/ NavMeshBakerService
to control runtime baking.
Create one via: Assets → Create → Runtime Navmesh Baker → Create Bake Profile
What profiles are good for
Keep multiple configurations (e.g., Open World, Dungeon, Arena).
Tune behavior without changing code.
Share consistent settings across scenes.

Overview
Bake Mode –
ContinuousAABB
orGridCells
Update Triggers – follow target & poll cadence
Continuous AABB – moving AABB “bubble”
Grid Cells (Window) – fixed-size cell window
Motion Gating – optional speed gates
Concurrency & Throttling – job limits
Source Collection – geometry/layers/default area
Agent Types & Area Costs – per-area traversal
Seam Links – optional links across tile edges
Inspector Reference
Mode
Bake Mode
ContinuousAABB – moving bounding box around target.
GridCells – rings of fixed cells around target (3×3, 5×5, …).
Combine Tiles If true, bake one continuous NavMesh per agent over the combined window (recommended). This eliminates seams and generally removes the need for seam links.
Center & Triggers
Follow Target – poll the assigned center target and enqueue bakes automatically.
Poll Rate (s) – how often to check the target’s position/velocity.
Continuous AABB
Move Threshold (m) – re-bake after the center moved this far.
Base Bounds Size (XYZ) – AABB size around the center.
Moving Rebake Interval (s) – minimal time between moving bakes.
Use Velocity Lead – bias AABB in the motion direction.
Velocity Lead (m) – how far to lead the AABB.
Edge Rebake Margin (m) – re-bake if center nears the edge of last AABB.
Motion Gating (Optional)
Max Bake Speed (m/s) – skip baking above this speed (0 = disabled).
Settle Seconds – time to remain under speed before baking resumes.
Grid Cells (Window)
Cell Size XZ (m) – cell dimensions on X/Z.
Cell Height (m) – vertical extent of each cell.
Cell Rings – rings around current cell (0 = current; 1 = 3×3; 2 = 5×5).
Cell Rebake Interval (s) – minimal time between cell updates.
Cell Hysteresis (0–0.9) – “stickiness” to avoid thrashing near borders.
Window Y Slab Height (m) – vertical slab used when baking the window.
Window Overlap Padding (m) – extra XZ padding for polygon overlap.
Quantize Window To Voxel – align window to voxel grid to reduce hairline cracks across updates.
Concurrency & Throttling
Max Concurrent Bakes – upper bound for parallel jobs.
Min Seconds Between Bakes / Surface – per (surface, agent) throttle; in combined mode this acts per-agent globally.
Source Collection
Collect Geometry – Physics Colliders / Render Meshes.
Layer Mask – included layers for collection.
Default Area – fallback NavMesh area index for collected sources.
Agent Types & Area Costs
Agent Type IDs – explicit agent types to bake (leave empty to use each surface’s agent type).
Area Costs [0..31] – set per-area traversal costs (
-1
leaves the area unchanged).
Seam Links (Tile Edge Portals)
Purpose
When baking grid cells (i.e., not one continuous combined mesh), adjacent cells may have tiny gaps or non-overlapping polygons along shared borders. Seam links place short NavMeshLink
s across those borders to ensure agents can cross cleanly.
When to use
GridCells bake mode.
Combine Tiles is off (i.e., multiple tiles instead of a single combined mesh).
Worlds where agents frequently traverse cell borders and you want deterministic crossing without relying on polygon overlap alone.
When you don’t need them
Combine Tiles = ON: one continuous mesh per agent has no seams.
ContinuousAABB where the combined window bake yields a continuous mesh (no per-cell seams).
Settings
Seam Links Enabled – master switch to generate links after bakes.
Step (m) – spacing along a shared border where link samples are attempted.
Gap (half, m) – half-width of the span across the seam; total link length ≈
2 × gap
.Y Tolerance (m) – allowed vertical delta between neighboring tiles to still generate links (treat as coplanar).
Face Epsilon (m) – tolerance for “touching” faces when detecting shared edges.
Link Width (m) – link radius; typically close to agent radius/diameter.
Area – NavMesh area index applied to generated links.
Cost Modifier – set to
-1
to keep engine default.
Practical tips
Prefer Combine Tiles where possible for best quality.
If you need discrete tiles (streaming/grids), enable seam links and set:
Step
: 1–2 m for dense cross-seams; 2–4 m for sparser worlds.Gap
: small (0.05–0.15 m) is usually enough to bridge slivers.Y Tolerance
: keep tight (≤ 0.05 m) to avoid linking mismatched floors.Face Epsilon
: small (≈ 0.02–0.05 m) to prevent false positives.
Best Practices
ContinuousAABB for compact maps / simple “bubble around player”.
GridCells for streaming / procedural worlds; add Seam Links if not combining tiles.
Keep pollRateSeconds between 0.1–0.25 s for responsive updates without spikes.
Cap maxConcurrentBakes to match your CPU budget.
Use areaCosts to nudge pathing (roads cheaper, hazards more expensive).
Last updated