This is a conversation of “object identity”.
You have a class (script, component, whatever). This is where the methods/members are defined for you object type.
Then you have an object instance of that class. There can be multiple instances of any given class.
For example there is the class ‘GameObject’, but you have hundreds, if not thousands of GameObjects instances in your scene. Each instance is distinct from one another, and their instance members are therefore distinct. The ‘name’ of one GameObject is distinct from the ‘name’ of another.
Declaring something static associates a member with the class rather than the object.
There is only ever 1 class ‘GameObject’, though there are multiple instances of it. (yes technically you can have 2 classes named GameObject in different namespaces or assemblies, but technically they’re different classes since their full names are different).
As a result you don’t access it via an instance, but by the class directly.
The fact that there is only ever one is a HUGE design choice and you should be careful about.
For example a static variable ‘GameManager.Health’ implies only one health ever existing! Whose health is it? Is it the player’s health? What if you decided to implement multiplayer?
But yeah when people say:
They’re not talking about the code within the class.
They’re talking about having a reference to an instance of that class.
var obj = new GameObject("");
obj.name = "A Name"; //I just accessed the name through the instance of the class GameObject
var foundObj = obj.Find("Something");//this will fail, Find is a static member of GameObject, I just attempted to access it via an instance of that class