Limitations
Hot Patch covers the edits you make most often while iterating. Some changes still need a normal Unity recompile.
Not supported in Play Mode
| Situation |
Why |
async / await methods |
Cannot be hot-patched |
ref / out / in parameters |
Not supported |
Abstract or extern methods |
No body to patch |
| New Unity messages mid-Play |
Unity only discovers them at compile time |
Scripts under Editor/ |
Editor-only; not runtime gameplay code |
| Package Cache scripts |
Outside your Assets/ project code |
| Player builds / IL2CPP |
Editor Play Mode only |
| Burst / Jobs |
Not supported |
| Devices |
No patching on hardware builds |
| Overloaded methods with the same name |
Matched by name only - prefer unique names for hot-patchable APIs |
Fields
| Works |
Does not |
| Adding a new instance field and using it in patched methods |
Editing/deleting existing serialized fields with full Inspector sync |
|
Re-running initializers on objects already in the scene |
|
Adding new static fields |
|
Full Inspector support for hot-added fields |
Partially supported
| Feature |
Notes |
| Changing a return type |
Works when types stay compatible |
| Adding a new normal method |
Available to your patched code; Unity will not call it as a message unless it already existed |
| Renaming a method |
Treated as remove + add - call the new name |
New .cs file during Play Mode |
Can compile dynamically; joins the main assembly after a domain reload |
| Lambda in a static field |
May keep the old delegate until re-assigned - see Lambdas |
Always needs a full recompile
.asmdef changes
- Scripting define symbols
.csproj / .sln changes
- Adding new Unity message methods
- Switching
async ↔ sync
- Adding
ref / out / in to parameters
Also see Requirements for platform and project scope.