C# stuff vs Unity stuff

When I was a kid there were no game engines, and manually coding graphics was too boring. I decided to give Unity a try and see if I can catch up.

Realizing I am learning two things at once, C# and Unity, I’d really like to know as I learn through these tutorials and such, “Did I just now learn something about C#, Unity, or both?”

Is there any resource here that lays out which things we do here are C# things vs Unity exclusive things? It may seem petty, but I think I would learn better if I could know how to categorize the things I am learning as I go.

For example, I know all languages more or less have types and variables, but when we do something like “Collider myCollider”, is Collider a C# type, or is it Unity making it a type?

Forgive me if this is covered in the Learn pages, but I’ve had difficulty navigating them, and I think they could be better organized, but I digress.

Thanks in advance.

Unity is providing the game engine, editor and deployment features for your game. You can build the whole scene in the editor, but for special effects or the behaviour of things (practically the gameplay or interaction) you will have to add some code. That can either be C# or javascript. I prefer C#, because of its type safety, but that is a matter of taste.

In C# you are using classes that are defined in different namespaces. There are quite a lot of standard classes like String, List, Math and such things that you would also have without Unity.

Unity adds mainly the namespaces UnityEngine (the engine classes that you will use in your game) and UnityEditor (only available during development, contains editor tools and classes). So Collider is technically a C# class of course, but is provided by Unity.

By creating a class of MonoBehaviour (defined in UnityEngine) and using the inspector or drag and drop to attach it to a GameObject (C# sharp class in one world and a scene hierarchy node in the world of the Unity editor), you are connecting the two worlds of C# and Unity.