Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Static fields in changed code are lost upon reload #110

Open
Epicguru opened this issue Nov 15, 2023 · 1 comment
Open

Static fields in changed code are lost upon reload #110

Epicguru opened this issue Nov 15, 2023 · 1 comment
Labels
feature New feature or request

Comments

@Epicguru
Copy link

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:

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.

@handzlikchris handzlikchris changed the title Static fields are lost upon reload Static fields in changed code are lost upon reload Nov 20, 2023
@handzlikchris handzlikchris added the feature New feature or request label Nov 20, 2023
@handzlikchris
Copy link
Owner

Hi - yes it'll be a limitation. When reload happens your new code is technically in class/new assembly with changed name.

Static values are not reinitialized.

I'll leave this one open as it's possible to reinitialize those on reload

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature New feature or request
Projects
Status: No status
Development

No branches or pull requests

2 participants