Unity utilise-t-il une version différente de C #, ou est-ce la même chose? Il semble différent du C # normal, mais il contient des éléments C # réguliers.
Unity utilise-t-il une version différente de C #, ou est-ce la même chose? Il semble différent du C # normal, mais il contient des éléments C # réguliers.
Réponses:
Comme indiqué dans d'autres réponses, Unity 4.x utilise une version modifiée de Mono basée sur Mono 2.6
Pour la plupart, cela est compatible avec le .Net 2.0 , même si je n'ai pas réussi à retrouver une liste de compatibilité spécifique à Mono 2.6.
Il semble différent du C # normal, mais il contient des éléments C # réguliers.
Comme mentionné dans l'un des commentaires sur votre question, cela est probablement dû à l'API de script particulière d'Unity plutôt qu'au langage lui-même.
Par exemple, beaucoup de code dans un projet Unity typique est contenu dans des sous-classes d'une classe appelée MonoBehavior. Ce sont des composants qui sont déposés sur GameObjects dans l'environnement Unity Editor. Cette architecture conduit à un code C # qui semble différent du code C # typique (pour moi de toute façon) de plusieurs façons:
En pratique, la plus grande fonctionnalité du langage C # qui me manque dans la version C # actuelle d'Unity est la prise en charge de async et des mots clés et fonctionnalités associés. Un concept similaire dans Unity est celui des coroutines . Celles-ci s'exécutent sur le thread principal, elles ne sont donc pas vraies asynchrones, mais permettent au code de longue durée d'être divisé sur plusieurs trames. Le multithreading de niveau inférieur est toujours pris en charge.
async
en C # ce n'est pas non plus vrai asynchrone comme en multi-thread - il fonctionne également sur le thread principal. Du point de vue de l'utilisation, les plus grandes différences entre les coroutines et l'async sont les heures d'exécution du code.
Unity 4 utilise Mono 2.6 , qui est une implémentation complète du framework .NET, y compris le langage C #.
Je ne sais pas à quoi cela ressemble, mais gardez à l'esprit que Unity prend en charge plusieurs langues, qui fonctionnent toutes sur le même runtime Mono. Est-il possible que vous confondiez C # avec UnityScript ?
Unity utilise le C # normal.
Là encore, lorsque vous écrivez C # dans Unity, vous utiliserez beaucoup de leurs bibliothèques, mais pour autant que je sache, tout ce qui est possible en C # est possible dans Unity, à l'exception des différences répertoriées ci-dessous:
Les domaines plus spécifiques de .Net relatifs aux formulaires Windows et ASP sont interdits via Unity.
Bien que vous puissiez utiliser Visual Studio pour les erreurs d'édition et de compilation, vous devez créer et exécuter dans l'IDE Unity.
Unity utilise Mono qui est une implémentation open source de .Net, ce qui signifie qu'il y a de légères différences.
La question de savoir si la version C # utilisée par Unity est différente d'un C # "normal" a été répondue par d'autres articles. Étant donné que vous demandez explicitement certains éléments qui pourraient différer d'une version aussi régulière, je partagerai la seule différence mineure que j'ai remarquée lors de la comparaison du C # que j'utilise au travail (c'est-à-dire C # 4.0 dans Visual Studio 2010 et supérieur) et C # dans Unity, qui est que je ne peux pas utiliser les valeurs par défaut pour les paramètres dans les définitions de fonction. c'est-à-dire que vous devez configurer votre projet plus soigneusement afin d'utiliser une version plus récente de C #. Voir ça lien pour plus d'explications.
Edit: Je laisse cette réponse car pour autant que je sache, c'est un malentendu qui arrive à beaucoup de gens.