Classes make Objects… GameObject, Transform, MeshRenderer etc. all classes.
When you make an instance of an object it’s customary to store it as a variable, which are usually lowercase first letter. There could be gameObject, transform, meshRenderer, myTransform or whatever you like.
GameObject go = Instantiate(prefab, Vector3.zero, Quaternion.identity) as GameObject;
go and prefab are likely variables in this script, zero and identity are static variables (don’t need an instance to access them) of the classes Vector3 and Quaternion respectively. GameObject, Vector3 and Quaternion are classes.
Customary, not mandatory, but sticking with custom helps others understand the code easily… and having said that if you tried to use a class within the UnityEngine with the wrong capitalisation you’ll get errors, i.e.
gameObject go = ....
is wrong.
Unity used to allow component references like “transform” and “rigidbody” without explicitly declaring them (it did that behind the scenes)… this has been (or is being, not entirely sure) phased out in Unity 5. So now you really should be doing things like
Transform transform = GetComponent<Transform>();
variable called “transform” of class “Transform” populated with the result of the GetComponent() function with type(T) of the “Transform” class.
in the Awake()/Start() functions.
more details in the unity blog for this change here: http://blogs.unity3d.com/2014/06/23/unity5-api-changes-automatic-script-updating/
and yes, looks a lot like an inventory. You could look into something like ScriptableObjects to hold the available job data too.