Unity3D è costituito da un motore di gioco più un editor 3D (abbastanza rudimentale). Fornisce mesh, trame, shader, terreno, telecamere, animazioni, sistemi di particelle, campioni audio e altri tipi di oggetti utili nei videogiochi. Include PHYSX (un motore fisico proprietario di proprietà di Nvidia) e Mono (l'implementazione open source di Common Language Runtime, aka .NET).
Quanto di questo che usi dipende da te. Puoi rappresentare tutte le tue strutture dati come oggetti Unity, costruire il tuo mondo nell'editor di Unity, attivare la fisica e lasciare che gli eventi seguano il loro corso, con un minimo di script. In alternativa, potresti spegnere il motore fisico, costruire il tuo mondo in modo algoritmico e programmare esplicitamente tutto il comportamento e la fisica degli oggetti.
Puoi scegliere di programmare il comportamento interamente in Mono (usando una delle lingue C #, JavaScript o Boo), oppure puoi scriverlo in un'altra lingua e collegarlo al tuo progetto Unity. (L'integrazione effettiva con gli oggetti di gioco deve essere tramite Mono, ma questo può essere un livello abbastanza sottile se vuoi.)
Il flusso di lavoro è molto simile a quello di qualsiasi motore di gioco. Gli artisti creano modelli, trame e animazioni, gli specialisti dell'audio producono suoni, i programmatori scrivono shader e comportamenti.
La comunità di programmatori Unity è molto utile, sia a answers.unity3d.com e forum.unity3d.com . (E forse qui allo Stack Exchange?)
Il modo migliore per scoprirlo è provarlo : la versione base è gratuita e ottieni un periodo di prova di 30 giorni per la versione "Pro".