Quel est le meilleur langage de script pour Unity3D
Je commence avec game dev à l'aide de Unity3d et je peux voir qu'il y a 3 langues prises en charge pour la création de scripts: C#, unityscript et Boo...
bien que, venant d'une web-design passé, je suis bien évidemment utilisé avec le javascript, mais après quelques tentatives, j'ai pu constater Unity3d n'a pas vraiment de support complet pour le langage de script et quelques éléments comme new Date().valueOf()
et quelques autres instructions à l'intérieur des méthodes telles que l'attribut arguments
et beaucoup d'autres ne fonctionnent pas correctement, aussi, il semble que mon fichier ne peut pas avoir un wrapper méthode qui envolves toutes les autres méthodes comme:
(function (scope) {
function Start() {
...
}
...
}(this));
et lors de l'utilisation de quelque chose comme new Date().valueOf()
ce qui est valable en JS j'obtiens:
MissingMethodException: Méthode non trouvé: 'Système.DateTime.valueOf'. Boo.Lang.Moment de l'exécution.DynamicDispatching.MethodDispatcherFactory.ProduceExtensionDispatcher ()
Alors peut-être que le compilateur transforme que l'initiale "unityscript' code Boo langue? alors peut-être que Boo est le droit "native" de choix et peut-être unityscript lui-même n'est pas la meilleure voie à suivre lors de l'élaboration de unity3d apps?
Je pensais à une langue qui a le plein soutien de tous les indigènes connues des classes et des méthodes qui fonctionnent sans problème?
Désolé pour les erreurs mentionnées ci-dessus et s'il vous plaît laissez-moi savoir ce que vous en pensez.
Vous devez vous connecter pour publier un commentaire.
L'unité n'utilisez pas de 'vrai' Javascript en soi. Voir:
http://forum.unity3d.com/threads/1117-Javascript-Version
UnityScript est basé sur javascript 2.0. Il y a quelques choses qui manquent (les instructions switch, etc.), mais ils obtiennent la moitié de la vitesse de C++, qui est beaucoup plus rapide que Mozilla.
Une fois que vous vous habituez à elle, à développer dans 'JS' pour l'unité est très très rapide et souple...mais bien sûr, si vous allez à développer des composants natifs, ou de l'interface à quoi que ce soit en C, vous aurez besoin d'utiliser le C# (en fin de compte, C# n'est pas difficile à apprendre).
Si vous voulez être un développeur de l'Unité et de construire une carrière sur elle, apprendre le C# et de l'utiliser - ne perdez pas votre temps avec UnityScript. Vous pouvez utiliser le C# en dehors de l'Unité de programmation. Si votre principale carrière est déjà en développement web (ou sera), puis continuer à l'aide de javascript parce que finalement, C# et UnityScript ont la même fonctionnalité, mais C# est beaucoup plus largement utilisé pour la programmation des jeux et des applications.
La majorité de l'actif sur le magasin que j'ai utilisés sont C# ou offrir à la fois JS et C#. Le mélange entre les langues crée de graves problèmes de dépendance parce que, pour utiliser une classe dans une autre langue, il doit déjà avoir été traitées par l'Unité de script ordre de chargement. Pour utiliser un Javascript classe définie en C#, ce fichier de script doivent avoir été effectuées avant le C# fichier de script. Si le javascript classe puis plus tard a besoin de quelque chose à partir de la classe C#, vous devez trouver des façons de contourner cela parce que c'est tout simplement plus possible à partir du fichier javascript. L'unité a des moyens pour définir le script de commande.
J'ai pensé que je pourrais vous mettre en garde sur le mélange C# avec UnityScript parce que si vous ne mettez pas l'accent sur l'un ou l'autre, vous serez confronté à ce problème. En fin de compte, C# est le juste milieu entre ambigu langues comme le VB et JavaScript, et pédant langages tels que le C++ (j'ai un C/C++ fond d'environ 10 ans).
Votre titre "Quelle est la meilleure xxx" conduit à opiniâtre réponses, mais j'essaie de donner le meilleur conseil possible sans être subjectif. C#, vous permettra de continuer, même si l'Unité devait s'en aller d'un an à partir de maintenant. UnityScript/JavaScript serait seulement de vous permettre de vous déplacer en étant un développeur web. Un développeur C# peut facilement se déplacer dans UnityScript/JavaScript, mais l'inverse est beaucoup plus difficile (pas impossible, juste un peu plus difficile).
Vous devez utiliser le c#. Il est populaire, mature, originaire de .NET. c# est ce que des grandes équipes. L'apprentissage du c# sera utile dans l'avenir. JS dans Unity3D n'est pas réel JS, comme déjà mentionné, et personne n'a entendu parler de Boo.
JS est le plus populaire de la langue pour une utilisation avec l'Unité. Mais la langue est mis en œuvre en Mono, et ainsi de toutes les restrictions à la mise en œuvre vont influer sur l'Unité des scripts trop.
Je ne sais pas comment le Mono mise en œuvre de la JS fonctionne, mais à en juger par le message d'erreur, il utilise les types de données définis initialement pour Boo, au moins. Toutefois, cela ne signifie pas que le JS est "transformé en Boo". Les deux sont compilés dans le même bytecode, qui est JIT ed et géré par le Mono de l'exécution. Ainsi ni la langue est "plus naturel" que les autres.
La caisse des avantages et des inconvénients de l'utilisation de c# et Java script à partir de ici.
C# est un peu plus rapide que le JavaScript et vous obtenez plus de fonctionnalités fournies par C#. Vous pouvez obtenir les peuples avis de ici.
Développer avec c# a l'avantage de Visual Studio 2010. Elle permet de mieux complétion de code que Mono développer.
En JavaScript uniquement les variables ont un type non spécifié. Cela se produit uniquement si vous n'affectez pas de valeur, tout en déclarant la variable.
Performance est plus lente avec typées dynamiquement des variables, et vous pouvez exécuter dans la coulée de problèmes. Si c'est un problème, utilisez #pragma strict.