Invisible Public Variable in Inspector

Is there any way of creating a public variable that doesn't show up in the inspector? We are currently working on a huuuge array (literally thousands of cells in it) and it works perfectly except from the fact that Unity's inspector tries to display it and crashed on a very regular basis.

The problem is that we need to make this variable public in order to have other scripts access it freely. But we cannot find a way to make the inspector ignore it.

We get the error message "too many heap sections" which means that somehow, somewhere Unity tries to sort the data and runs out of memory. We do not need to look at the data, so we'd like to NOT show it if possible.

BTW, when we close the inspector, Unity doesn't crash. That's how we know the source of the problem.

Any ideas?

Hi.

You would do something like this:-

public float notHidden; // Displayed
[HideInInspector] // Hides var below
public float hidden;

The attribute HideInInspector might be of use, as well as NonSerialized if you don't want the values of the variables to be saved with the scene.

Note also that in general at least, it's not necessary for a variable to be public in order for it to be accessible from outside a class/struct. (In C#, for example, it's common to use properties to facilitate controlled access to protected or private data.)

I think this is a better solution for when you set the value from another script:

[System.NonSerialized] public int valueOfSomeThing;

Since it avoids bad data being stored in the scene.

[HideInInspector] still works but the above should solve the more recent complaints of the original script not working eight years after the original answers were given :slight_smile:

FYI, You could also use the Internal scope for your variable if you plan to only use it in the same assembly.

guys can we write this like here in my code ???

[HideInInspector] public string myVar;

it doe not makes a serious problem in future ???