Limitations
Not supported during Play Mode
| Category |
Details |
async / await |
Async methods cannot be hot-patched |
ref / out / in |
By-reference parameters are not supported |
| Abstract / extern |
No method body to patch |
| New Unity messages |
Adding Update() etc. mid-Play-Mode requires recompile |
| Editor scripts |
Files under Editor/ folders are excluded |
| Package Cache |
Files under Library/PackageCache/ are excluded |
| IL2CPP / player builds |
Editor Play Mode only |
| Burst / Unity Jobs |
Not supported |
| Device debugging |
No patching on physical devices |
| Method overloads |
Resolution is by method name only |
Fields
Hot Patch has limited field support:
| Supported |
Not supported |
| Adding new instance fields during Play Mode |
Editing/deleting existing serialized fields with Inspector sync |
| New fields available inside patched methods |
Re-running field initializers on existing instances |
|
Static field additions |
|
Full Inspector integration for hot-added fields |
Partially supported
| Feature |
Notes |
| Return type changes |
Supported via surrogate indirection when types are compatible |
| New methods in existing types |
Compiled and available to patched code; not auto-hooked into Unity dispatch |
| Method renames |
Treated as delete + add; invoke the new name |
New .cs files during Play Mode |
Compiled dynamically; not in Assembly-CSharp until domain reload |
| Lambdas in static fields |
Delegate may hold old version until re-assigned |
Always requires full recompile
.asmdef file changes
- Scripting define symbol changes
.csproj / .sln changes
- Adding new Unity message methods
async to sync (or reverse) conversion
- Adding
ref / out / in to parameters