Hello!
So today the philosophical side of me took over for a while, and I was thinking about how Transform and GameObject have identical functions. For example, there’s Transform.Find and GameObject.Find, and the same is for GetComponent. However, there is no GameObject.Translate function, but there is Transform.Translate. Then you also have to deal with declaring GameObjects or Transforms, so you need to write transform.Translate to move the transform the script is attached to, but if you’re moving a GameObject’s transform you’d use MyObject.transform.Translate(). Makes things much more complicated for people new to Unity, since some GameObject and Transform class functions are the same, some newbies might be inclined to write GameObject.Translate().
So this got me thinking: If every GameObject has a Transform, why not combine the GameObject and Transform classes into one Transform or one GameObject class, or a new differently named class (UnityObject sounds good :)).
Is there a good reason to have separate GameObject and Transform classes, since each GameObject has a Transform component?