Inspector remembers [HideInInspector] variables

The inspector remembers values of variables that are set to be hidden in the Inspector which I think it should not do. My test script looks like this:

class MyClass : MonoBehaviour
{
    [HideInInspector]
    public string myText = "111";

    void Start()
    {
         Debug.Log("myText: " + myText);
    }
}

Now I attach the script to a gameObject, run the project and get “myText: 111” in the console as expected.

Then I change the “111” in my script to something else i.e. “222”, run the project again and still get “myText: 111” in the console.

Now I reset my Script component in the inspector, run the project once more and get the expected “myText: 222” in the console.

I would say this is a bug since [HideInInspector] should make unity to ignore the variable and not remember its current value. Or is this now intended behaviour?

HideInInspector makes it not visible, but it is still serialized as normal. You probably want to add System.NonSerialized

[HideInInspector] does exactly what its name suggests, it prevents it being visible in the inspector.

It is still a public variable so Unity still serializes it for you.

NonSerialized does both, it hides it in the inspector and prevents it being serialized.