handzlikchris / handzlikchris/FastScriptReload
Static fields in changed code are lost upon reload
- Dominant language
- C#
- Stars
- 2.2k
- Forks
- 167
- PR merge metrics
- No merged PRs in 30d
Description
I am not sure whether this is expected behaviour or not, but I could not find any reference in the documentation to static fields not being supported.
I am trying to reload a static class that has a static `Material` field that is assigned on startup via reflection.
The static class content looks like this:
```C#
private static Material material;
public static void DrawReticleCircle(in ReticleDrawArgs args)
{
var position = args.WorldPosition;
// ...
Graphics.DrawMesh(mesh, trs, material, 0);
}
static void OnScriptHotReloadNoInstance()
{
Debug.Log($"Post-reload, asset is {material} (null={material==null})");
}
```
After changing the contents of DrawReticleCircle, the script is reloaded but the value of `material` is lost.
The debug log reads: `Post-reload, asset is (null=True)`
I would expect for the value to be copied over, or for the new code to reference the field in the old assembly (if this is possible?).
Is this a known limitation or a bug? If it is a limitation, I think it is worth pointing out in the documentation.
Thanks.
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.