En quoi C # et UnityScript diffèrent-ils dans le développement Unity? [fermé]

13

Outre les différences de langage évidentes, comment UnityScript et C # diffèrent-ils lors du développement de jeux dans Unity3D?

  • Y a-t-il une différence de performance notable?
  • Le code UnityScript est-il conditionné tel quel? Si oui, cela améliore-t-il la modabilité du jeu?
  • Est-il possible d'utiliser des bibliothèques développées pour une langue tout en développant dans l'autre?
  • Les deux langues peuvent-elles être mélangées dans le même projet Unity; coder certaines parties en C # et d'autres en UnityScript?
Kostas
la source
Il n'y a pas de composant d'écriture. Mais C # permet des choses supplémentaires comme les importations de DLL. A part ça, c'est un "choix". Et complètement subjectif. N'oubliez pas, il y a aussi Boo dans lequel vous pouvez écrire votre code.
Sidar
2
Question utile avec des réponses objectives - semble injuste qu'elle ait été fermée.
UpTheCreek
1
Il y a deux raisons principales pour lesquelles cette question a été fermée, et elles n'ont rien à voir avec l'utilité de la question ou l'objectivité des réponses. Premièrement, le message pose plus d'une question non liée. Deuxièmement, certaines des questions posées sont trop orientées vers la discussion et / ou deux larges pour être appropriées telles qu'elles sont écrites. À quel point une question est «utile» ou populaire, ou à quel point les réponses sont bonnes, elles sont toutes deux indépendantes du fait que la question soit appropriée ou non pour le site.

Réponses:

12

Y a-t-il une différence de performance notable?

Non. Il existe techniquement une très petite différence de performances , mais elle n'est pas suffisamment importante pour fonder votre choix de langue dans la plupart des cas.

Est-il possible d'utiliser des bibliothèques développées pour une langue tout en développant dans l'autre?

Oui. Tant que vous vous assurez de conserver la structure de dossiers recommandée par le développeur de la bibliothèque, cette bibliothèque est accessible à partir de n'importe quelle langue. Cela a à voir avec l' ordre de compilation Unity . Certaines fonctionnalités des IDE, comme la saisie semi-automatique, peuvent cependant ne pas fonctionner pour la bibliothèque choisie. (EDIT: cela peut être corrigé en utilisant le plugin gratuit UnityVS pour Visual Studio.)

Est-il possible de mélanger les deux langages dans le même projet Unity en codant certaines parties en C # et d'autres en Javascript?

Encore une fois, oui. Cependant, cela se complique rapidement, car vous devez vous assurer que tout est compilé dans le bon ordre. Bien que cela soit techniquement possible, je vous recommande de choisir une langue et de la respecter.

Quelle langue dispose de meilleures ressources spécifiques aux développeurs de jeux (livres, sites Web, forums)?

Dur à dire. En parcourant les forums, je dirais que Javascript a un peu plus de tutoriels et d'exemples de code. Le code est généralement assez facile à porter dans l'autre langue, et comme les bibliothèques sont utilisables en plusieurs langues, ce ne sera probablement pas un problème majeur.

Lokkij
la source
8

La toute première question que se posent tous les développeurs Unity débutants est C # ou JS. Allez toujours avec C #.

Maintenant, en ce moment, vous pensez peut-être, "Mais je ne veux pas apprendre le C # et je connais déjà un peu de JavaScript."

Mais la chose trompeuse que vous devez considérer est que Unity JavaScript n'est pas JavaScript. Il s'agit d'un placage superficiel de la syntaxe ECMA sur .NET CLR. Il ne fait aucune des choses intéressantes que JavaScript fait comme les boîtiers anonymes et les références de fonction comme vous les utiliseriez normalement. Il a ses propres tableaux qui ne correspondent pas aux tableaux .net normaux, et vous rencontrerez de nombreux pièges et limitations que vous auriez pu éviter en utilisant C #. Unity JavaScript n'est qu'une couche de syntaxe enrobée de bonbons conçue pour rendre .NET moins intimidant, rien de plus. Cela vous fera plus de mal que de bien.

Groenland
la source
7

Tout d'abord, je recommanderais C # sur JavaScript pour la programmation dans Unity pour deux raisons principales. La première raison se résume à la différence de frappe forte / faible que vous avez en quelque sorte écartée. Je pense que le typage fort fonctionne mieux que le typage faible au niveau conceptuel, mais franchement, c'est un gros argument que les gens ont et je vais donc me concentrer davantage sur un problème pratique spécifique: le déploiement sur iOS (et peut-être d'autres plates-formes aussi, mais c'est la je n'en connais qu'un seul) nécessite une saisie statique. Unity a même une directive "#pragma strict" qui peut forcer la saisie statique en JavaScript pour cette raison, mais cela m'amène à ma deuxième raison ...

Deuxièmement, le JavaScript dans Unity n'est pas entièrement identique à JavaScript dans un navigateur. Cela crée des problèmes lorsque vous essayez d'appliquer des connaissances extérieures à Unity (c'est-à-dire la majorité des ressources sur JavaScript) à la programmation dans Unity. C'est pourquoi de nombreux développeurs Unity appellent le langage UnityScript.


Maintenant, pour répondre à vos questions spécifiques:

Y a-t-il une différence de performance notable?

Pas vraiment, non ( quelques détails )

Le code javascript est-il conditionné tel quel? Et si oui, cela améliore-t-il la modabilité du jeu?

Cela dépend de la plate-forme, et non, cela n'aide pas vraiment la modabilité

Est-il possible d'utiliser des bibliothèques développées pour une langue tout en développant dans l'autre?

Je pense que oui (même si je n'ai jamais eu besoin de le faire, car toutes les bibliothèques que j'utilise ont été programmées en C #)

Est-il possible de mélanger les deux langages dans le même projet Unity en codant certaines parties en C # et d'autres en Javascript?

Oui (bien que j'essaye de l'éviter, pour des raisons de cohérence)

jhocking
la source
dentedpixel.com/developer-diary/… pourrait vouloir ajouter ceci à votre réponse. A voté.
Gray
linke intéressant, ajouté
jhocking