Skip to content

Static fields in changed code are lost upon reload #110

Open
@Epicguru

Description

@Epicguru

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    featureNew feature or request

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions