Frage

Ich beginne mit der Spielentwicklung mit Unity3d und sehe, dass es 3 unterstützte Sprachen zum Erstellen von Skripten gibt:C #, Unityscript und Boo...

obwohl ich aus einer Webdesign-Vergangenheit komme, bin ich offensichtlich mit Javascript vertraut, aber nach einigen Versuchen konnte ich feststellen, dass Unity3d die Skriptsprache und einige Elemente wie nicht wirklich vollständig unterstützt new Date().valueOf() und einige andere Anweisungen innerhalb von Methoden wie dem Attribut arguments und viele andere funktionieren nicht richtig, außerdem scheint es, dass meine Datei keine Wrapper-Methode haben kann, die alle anderen Methoden wie umfasst:

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

und wenn man so etwas benutzt new Date().valueOf() was in JS gültig ist, bekomme ich:

MissingMethodException:Methode nicht gefunden:'System.Datum / Uhrzeit.Wert von'.Buh.Lang.Laufzeit.Dynamischer Versand.Methodedispatcherfactory.ProduceExtensionDispatcher ()

Vielleicht wandelt der Compiler diesen anfänglichen 'Unityscript' -Code in die Boo-Sprache um?vielleicht ist Boo also die richtige 'native' Wahl und vielleicht ist Unityscript selbst nicht der beste Weg, um Unity3d-Apps zu entwickeln?

Ich habe an eine Sprache gedacht, die alle bekannten nativen Klassen und Methoden voll unterstützt, die problemlos funktionieren?

Entschuldigen Sie die oben genannten Fehler und lassen Sie mich bitte wissen, was Sie denken.

War es hilfreich?

Lösung

Unity verwendet per se kein echtes Javascript.Sehen:

http://forum.unity3d.com/threads/1117-Javascript-Version

UnityScript basiert auf Javascript 2.0.Es fehlen ein paar Dinge (Switch-Anweisungen usw.).), aber sie bekommen die halbe Geschwindigkeit von C ++, was viel schneller ist als Mozilla.

Sobald Sie sich daran gewöhnt haben, ist die Entwicklung in 'JS' für Unity sehr, sehr schnell und flexibel...aber wenn Sie native Komponenten oder Schnittstellen zu irgendetwas in C entwickeln möchten, müssen Sie natürlich C # verwenden (am Ende ist C # nicht schwer zu erlernen).

Andere Tipps

Wenn Sie Entwickler in Unity werden und eine Karriere darauf aufbauen möchten, lernen Sie C # und verwenden Sie es - verschwenden Sie keine Zeit mit UnityScript.Sie können C # außerhalb von Unity für die Programmierung verwenden.Wenn Ihre Hauptkarriere bereits die Webentwicklung ist (oder sein wird), verwenden Sie weiterhin Javascript, da C # und UnityScript letztendlich die gleiche Funktionalität haben, C # jedoch viel häufiger zum Programmieren von Spielen und Anwendungen verwendet wird.

Die meisten Assets im Store, die ich verwendet habe, sind C # oder bieten sowohl JS als auch C # an.Das Mischen zwischen den Sprachen führt zu ernsthaften Abhängigkeitsproblemen, da eine Klasse in einer der Sprachen bereits von der Ladereihenfolge des Unity-Skripts verarbeitet worden sein muss, um sie in einer der Sprachen verwenden zu können.Um eine Javascript-definierte Klasse in C # zu verwenden, muss diese Skriptdatei vor der C # -Skriptdatei verarbeitet worden sein.Wenn die Javscript-Klasse dann später etwas aus der C # -Klasse benötigt, müssten Sie Wege finden, dies zu umgehen, da dies aus der Javascript-Datei einfach nicht mehr möglich ist.Unity hat Möglichkeiten, die Skriptreihenfolge zu definieren.

Ich dachte, ich würde Sie davor warnen, C # mit UnityScript zu mischen, denn wenn Sie sich nicht auf das eine oder andere konzentrieren, werden Sie auf dieses Problem stoßen.Letztendlich ist C # der Mittelweg zwischen mehrdeutigen Sprachen wie VB und JavaScript und pedantischen Sprachen wie C ++ (ich habe einen C / C ++ - Hintergrund von ungefähr 10 Jahren).

Ihr Titel "Was ist das beste xxx" führt zu meinungsstarken Antworten, aber ich versuche, den bestmöglichen Rat zu geben, ohne subjektiv zu sein.Mit C # können Sie fortfahren, auch wenn Unity in einem Jahr verschwinden sollte.UnityScript / JavaScript würde Ihnen nur erlauben, ein Webentwickler zu werden.Ein C # -Entwickler kann leicht in UnityScript / JavaScript wechseln, aber das Gegenteil ist viel schwieriger (nicht unmöglich, nur schwieriger).

Sie sollten c # verwenden.Es ist beliebt, ausgereift und stammt aus .NET.c # ist das, was große Teams verwenden.Das Erlernen von c # wird in Zukunft nützlich sein.JS in Unity3D ist, wie bereits erwähnt, kein echtes JS und niemand hat von Boo gehört.

JS ist die beliebteste Sprache für die Verwendung mit Unity.Die Sprache ist jedoch in Mono implementiert, und daher wirken sich alle Einschränkungen in dieser Implementierung auch auf Unity-Skripte aus.

Ich weiß nicht, wie die Mono-Implementierung von JS funktioniert, aber nach der Fehlermeldung werden zumindest Datentypen verwendet, die ursprünglich für Boo definiert wurden.Das bedeutet jedoch nicht, dass JS "in Boo verwandelt" wird.Beide werden in denselben Bytecode kompiliert, der von der Mono-Laufzeit JITED und ausgeführt wird.Also ist keine Sprache "einheimischer" als die andere.

Checkout Vor- und Nachteile der Verwendung von c # und Java Script von hier.C # ist etwas schneller als JavaScript und Sie erhalten zusätzliche Funktionen von C #.Sie können die Meinung der Leute von bekommen hier.

Die Entwicklung mit c # hat den Vorteil von Visual Studio 2010.Es bietet eine bessere Code-Vervollständigungsfunktion als Mono-Entwicklung.

Nur in JavaScript können Variablen einen nicht spezifizierten Typ haben.Dies tritt nur auf, wenn Sie beim Deklarieren der Variablen keinen Wert zuweisen.

Die Leistung ist bei dynamisch typisierten Variablen langsamer, und Sie können auf Casting-Probleme stoßen.Wenn dies ein Problem ist, verwenden Sie #pragma strict .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top