- Home /
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?
Answer by Adam-Mechtley · Apr 27, 2017 at 09:25 AM
HideInInspector makes it not visible, but it is still serialized as normal. You probably want to add System.NonSerialized
Okay, thanks to you and alankemp.
I was using [HideInInspector] all the time and never noticed this until now. I guess I was just lucky until now. I will have to change a bunch of scripts now just to be on the save side.
Answer by alankemp · Apr 27, 2017 at 09:26 AM
[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.
Your answer
Follow this Question
Related Questions
Making a minor change to Default inspector? 1 Answer
Why do Public Variables overwrite a Scripts Default Value 2 Answers
Is it possible to show Static Variables in the Inspector? 10 Answers
Javascript and C#, different behaviour in inspector ? 1 Answer
How to expose variables in c# according to selected booleans 1 Answer