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?
unity
c#
performance
unityscript
Kostas
la source
la source
Réponses:
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.
la source
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.
la source
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:
Pas vraiment, non ( quelques détails )
Cela dépend de la plate-forme, et non, cela n'aide pas vraiment la modabilité
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 #)
Oui (bien que j'essaye de l'éviter, pour des raisons de cohérence)
la source