Question

Je commence par Game Dev en utilisant Unity3d et je peux voir qu'il y a 3 langages pris en charge pour créer des scripts: C #, UnityScript et Boo ...

Bien que, venant d'un passé de conception Web, je suis évidemment utilisé avec JavaScript, mais après quelques tentatives, je pourrais remarquer que Unity3d n'a pas vraiment de soutien à la langue du script et à certains éléments comme new Date().valueOf() et quelques autres déclarations dans des méthodes telles que l'attribut arguments Et beaucoup d'autres ne fonctionneront pas correctement, il semble également que mon fichier ne puisse pas avoir une méthode de wrapper qui envole toutes les autres méthodes comme:

(function (scope) {
    function Start() {
        ...
    }
    ...
}(this));

Et lorsque vous utilisez quelque chose comme new Date().valueOf() qui est valable dans js je reçois:

MissingMethodexception: Méthode introuvable: «System.DateTime.valueof». Boo.lang.runtime.damicdispatching.methoddispatcherfactory.produceExtensionDispatcher ()

Alors peut-être que le compilateur transforme ce code «UnityScript» initial en langage BOO? Alors peut-être que Boo est le bon choix `` natif '' et peut-être que UnityScript lui-même n'est pas le meilleur chemin à parcourir lors du développement d'applications Unity3D?

Je pensais à une langue qui a un soutien total à toutes les classes et méthodes natives connues qui fonctionneront sans problème?

Désolé pour les erreurs mentionnées ci-dessus et faites-moi savoir ce que vous en pensez.

Était-ce utile?

La solution

Unity n'utilise pas de «vrai» javascript en soi. Voir:

http://forum.unity3d.com/threads/1117-javascript-version

UnityScript est basé sur JavaScript 2.0. Il manque quelques choses (instructions de commutation, etc.), mais elles obtiennent la moitié de la vitesse de C ++, ce qui est beaucoup plus rapide que Mozilla.

Une fois que vous vous y êtes habitué, le développement en `` js '' pour l'unité est très très rapide et flexible ... mais bien sûr, si vous allez développer des composants natifs, ou une interface à quoi que ce soit en C, vous devrez utiliser C # (En fin de compte, C # n'est pas difficile à apprendre).

Autres conseils

Si vous voulez être développeur dans Unity et construire une carrière dessus, apprenez C # et utilisez-le - ne perdez pas votre temps avec UnityScript. Vous pouvez utiliser C # en dehors de l'unité pour la programmation. Si votre carrière principale est déjà le développement Web (ou sera), continuez à utiliser JavaScript car en fin de compte C # et UnityScript ont les mêmes fonctionnalités mais C # est beaucoup plus largement utilisé pour programmer des jeux et des applications.

La majorité des actifs du magasin que j'ai utilisés sont C # ou offrent à la fois JS et C #. Le mélange entre les langues crée de graves problèmes de dépendance car pour utiliser une classe dans l'une ou l'autre langue, il doit déjà être traité par l'ordre de chargement du script Unity. Pour utiliser une classe définie JavaScript dans C #, ce fichier de script doit avoir été traité avant le fichier de script C #. Si la classe Javscript a alors besoin plus tard de quelque chose de la classe C #, vous devrez trouver des moyens de contourner cela car il ne peut plus possible dans le fichier JavaScript. Unity a des moyens de définir l'ordre de script.

J'ai pensé que je vous avertirais de mélanger C # avec UnityScript parce que si vous ne vous concentrez pas sur l'un ou l'autre, vous rencontrerez ce problème. En fin de compte, C # est le juste milieu entre les langues ambiguës comme VB et JavaScript, et les langages pédantes comme C ++ (j'ai un fond C / C ++ d'environ 10 ans).

Votre titre "Quel est le meilleur xxx" mène à des réponses d'opinion, mais j'essaie de donner les meilleurs conseils possibles sans être subjectif. C # vous permettra de continuer, même si l'unité devait disparaître dans un an. UnityScript / JavaScript ne vous permettrait que de passer à un développeur Web. Le développeur AC # peut facilement passer à UnityScript / JavaScript, mais l'inverse est beaucoup plus difficile (pas impossible, juste plus difficile).

Vous devez utiliser C #. Il est populaire, mature, originaire de .NET. C # est ce que les grandes équipes utilisent. L'apprentissage C # sera utile à l'avenir. JS dans Unity3d n'est pas réel comme déjà mentionné et personne n'a entendu parler de Boo.

JS est le langage le plus populaire à utiliser avec Unity. Mais la langue est mise en œuvre dans mono, et donc toute restriction dans cette implémentation va également affecter les scripts d'unité.

Je ne sais pas comment fonctionne l'implémentation mono de JS, mais à en juger par le message d'erreur, il utilise au moins des données de données initialement définies pour BOO. Cependant, cela ne signifie pas que JS est "transformé en boo". Les deux sont compilés dans le même bytecode, qui est jit'ed et exécuté par le mono runtime. Ainsi, aucune langue n'est "plus indigène" que l'autre.

Avantages de paiement et inconvénients de l'utilisation du script C # et Java de ici. C # est un peu plus rapide que JavaScript et vous obtenez des fonctionnalités supplémentaires fournies par C #. Vous pouvez obtenir l'opinion des gens de ici.

Développer avec C # a l'avantage de Visual Studio 2010. Il fournit une meilleure fonctionnalité d'achèvement de code que mono développer.

Dans JavaScript uniquement, les variables peuvent avoir un type non spécifié. Cela ne se produit que si vous n'attribuez pas de valeur lors de la déclaration de la variable.

Les performances sont plus lentes avec des variables dynamiquement typées, et vous pouvez rencontrer des problèmes de coulée. Il s'agit d'une préoccupation, utilisez #pragma strict.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top