Une énorme communauté soutient le logiciel ainsi que beaucoup de français sur mon site non-officiel unity3d-france.com.

Unity est un logiciel middleware similaire à Flash mais destiné à la 3D temps réel, il permet de créer entre autres des jeux vidéos et d'exporter en un clic vers différentes plateformes : iOs, Android, PC, Mac, Linux, Flash, PS3, XBOX 360, Wii et d'autres futures plateformes comme windows mobile, Blackberry, Wii U, PS4 et PS Vita.
Le logiciel existe en 2 versions. Une payante et une gratuite avec des options en moins non bloquantes.
L'intérêt de ce logiciel est de créer un seul développement pour de multiples publications ce qui permet un énorme gain de temps pour un portage car on a juste à cliquer sur un bouton pour avoir un export dédié. Magique !

Le logiciel est une sorte d'éditeur visuel qui se découpe en plusieurs fenêtres :
-la Scene sur laquelle vous placez les objets contenus dans la fenêtre Project.
-la Hierarchy qui est un doublon textuel de la Scene
-la Game qui est le rendu du jeu
-la Inspector qui affiche les propriétés d'un objets en cliquant dessus

Vous disposez de bouton de lecture/pause pour lancer le jeu sans le compiler.

Unity est une sorte de boite de lego, c'est-à-dire que vous pouvez y importer des éléments externes pour les assembler dans l'éditeur. Ainsi vous pouvez y importer des objets 3D dans différents formats (3ds, obj, C4D, LWS, Blend, FBX) ainsi que leurs propriétés liées comme les animations, des images (jpg, png, psd), du son (mp3, ogg, mod, xm, it), de la vidéo...

La base des objets présents sur la scène d'Unity est le GameObject auquel on peut ajouter une multitude de composants pour lui ajouter des fonctions. A la base, le GameObject a un seul composant par défaut, le Transform qui représente 3 coordonnées: la position, la rotation, et la taille.
Les composants que l'on peut rajouter à notre GameObject sont définis dans l'éditeur comme la physique, un système de particule, un contrôleur de personnage, les caméras, les sons, les lumières, le GUI,un gestionnaire d'animation etc. Le nombre de composant ajoutable est infinie mais si vous ne trouvez pas votre bonheur vous pouvez coder le votre.



De plus un éditeur de terrain très complet est aussi intégré.

Pour cela, il faudra développer des scripts en 3 langages possibles (javascript, C# et Boo) que vous pourrait attacher comme un composant sur votre GameObject. Le choix de ces 3 langanges est judicieux car il a permis d'attirer les gens venant du Flash actionscript, ceux venant du .NET et du C ainsi que les devs en Python. Donc tout le monde s'y retrouve sachant qu'au final le tout est compilé en MONO.

Pour le développement, en bref, on se retrouve dans un système de variables et de fonctions avec la possibilité de faire de la POO. Les variables peuvent être privées ou publiques et ces dernières apparaissent dans l'Inspector.
Des fonctions dédiés à Unity sont présentes :

function Awake(){
// fonction qui se lance à l'initialisation du jeu et permet de paramétrer les variables
}

function Start(){
//fonction qui se lance au début du jeu à la première frame
}

function Update(){
// fonction qui est une boucle à chaque frame
}

function FixedUpdate(){
//fonction qui est une boucle plus rapide pour gérer la physique qui demande plus de précision
}

function OnGUI(){
//fonction qui permet de gérer l'interface graphique
}

De plus, il faut savoir que TOUS les paramètres des composants d'Unity sont accessibles par script et une énorme documentation existe sur le site officiel. Mais plus fort encore, vous pouvez aussi coder l'éditeur lui-même dans le même langage pour lui ajouter des fonctions supplémentaires, des plug ou des add-ons. Ainsi on trouve sur l'asset store, le magasin d'Unity, des centaines de plug développés par le communauté pour étendre l'éditeur et lui ajouter des fonction manquantes.
Le magasin est accessible directement par l'éditeur et dispose de produits payants ou gratuits qui peuvent être ensuite directement téléchargés dans votre projet.

L'avantage d'Unity est que tout est fait pour vous simplifier le travail et un graphiste 3D pourra facilement faire du level design à partir de ses créations. L'import des matériaux est encore un peu bancal vu le nombre de format 3D différents et la plupart du temps il faudra les refaire avec les shaders intégrés d'Unity mais sachez que vous pouvez aussi coder vos propres shaders en Cg/HLSL qui est un langage assez costaud dédié aux spécialistes des cartes graphiques. Cependant, des éditeur visuel de shader existent sur l'asset store en version payante.

 

Outre le fait qu'Unity est un outil dédié 3D, beaucoup de gens comme moi, s'en servent pour créer des jeux en 2D grace à la caméra orthographique et la possibilité de coder des scripts pour animer les spritesheets.
C'est d'ailleurs sur mobile qu'Unity à d'abord explosé et est devenu une référence chez les indés. Aujourd'hui Unity vise les grands studios de dev en apportant sa rapidité de création, un éditeur très stable, et un gain de temps énorme surtout pour les portages. La seule chose qui peut lui faire défaut est peut être un moteur 3D au rendu plus performant comme l'Unreal Engine, mais je pense que ça viendra dans ses futures évolutions vu qu'il gère désormais DirectX 11.
De plus, Unity est un outil et vous pouvez créer le pire et le meilleur avec, tout dépend de votre talent et je vous invite à l'essayer comme ça vous pourrez voir le travail qu'il y a derrière un jeu, ce qui remettra en place certains Haters complètement à côté de la plaque lorsqu'ils critiquent une création ;)