Wie unterscheiden sich C # und UnityScript in der Unity-Entwicklung? [geschlossen]

13

Wie unterscheiden sich UnityScript und C #, abgesehen von den offensichtlichen Sprachunterschieden, bei der Entwicklung von Spielen in Unity3D?

  • Gibt es einen merklichen Leistungsunterschied?
  • Ist der UnityScript-Code unverändert verpackt? Wenn ja, hilft das der Modifizierbarkeit des Spiels?
  • Ist es möglich, Bibliotheken zu verwenden, die für eine Sprache entwickelt wurden, während in der anderen entwickelt wurde?
  • Können die beiden Sprachen im selben Unity-Projekt gemischt werden? Codierung einiger Teile in C # und anderer in UnityScript?
Kostas
quelle
Es gibt keine schreibenden Komponenten. Aber C # erlaubt zusätzliche Dinge wie DLL-Importe. Ansonsten ist es eine "Wahl". Und völlig subjektiv. Vergiss nicht, es gibt auch Boo, in dem du deinen Code schreiben kannst.
Sidar
2
Hilfreiche Frage mit objektiven Antworten - scheint unfair, dass es geschlossen wurde.
UpTheCreek
1
Es gibt zwei Hauptgründe, warum diese Frage geschlossen wurde, und sie haben nichts mit dem Nutzen der Frage oder der Objektivität der Antworten zu tun. Erstens stellt der Beitrag mehr als eine unabhängige Frage. Zweitens sind einige der gestellten Fragen zu diskussionsorientiert und / oder zu weit gefasst, als dass sie schriftlich angemessen wären. Wie hilfreich oder beliebt eine Frage ist oder wie gut die Antworten sind, hängt davon ab, ob die Frage für die Website geeignet ist oder nicht.

Antworten:

12

Gibt es einen merklichen Leistungsunterschied?

Nein. Es gibt technisch gesehen einen sehr geringen Leistungsunterschied , der jedoch in den meisten Fällen nicht ausreicht, um Ihre Sprachauswahl zu stützen.

Ist es möglich, Bibliotheken zu verwenden, die für eine Sprache entwickelt wurden, während in der anderen entwickelt wurde?

Ja. Solange Sie sicherstellen, dass die vom Entwickler der Bibliothek empfohlene Ordnerstruktur beibehalten wird, kann von jeder Sprache aus auf diese Bibliothek zugegriffen werden. Dies hat mit der Unity-Kompilierungsreihenfolge zu tun . Einige Funktionen in IDEs, wie z. B. die automatische Vervollständigung, funktionieren jedoch möglicherweise nicht für die ausgewählte Bibliothek. (BEARBEITEN: Dies kann mit dem kostenlosen Plugin UnityVS für Visual Studio behoben werden .)

Ist es möglich, die beiden Sprachen im selben Unity-Projekt zu mischen, indem einige Teile in C # und andere in Javascript codiert werden?

Wieder ja. Es wird jedoch schnell kompliziert, da Sie sicherstellen müssen, dass alles in der richtigen Reihenfolge kompiliert wird. Obwohl es technisch möglich ist, empfehle ich Ihnen, eine Sprache auszuwählen und dabei zu bleiben.

In welcher Sprache sind für Spieleentwickler bessere Ressourcen verfügbar (Bücher, Websites, Foren)?

Schwer zu sagen. Wenn Sie in den Foren surfen, hat Javascript etwas mehr Tutorials und Codebeispiele. Code ist im Allgemeinen recht einfach in die andere Sprache zu portieren, und da Bibliotheken sprachübergreifend verwendbar sind, wird dies höchstwahrscheinlich kein großes Problem darstellen.

Lokkij
quelle
8

Die allererste Frage, die Unity-Entwickler zu Beginn haben, ist C # oder JS. Gehen Sie immer mit C #.

Jetzt denken Sie vielleicht: "Aber ich möchte C # nicht lernen und kenne mich bereits mit JavaScript aus."

Aber das Irreführende, was Sie beachten müssen, ist, dass Unity JavaScript kein JavaScript ist. Es ist ein oberflächliches Furnier der ECMA-Syntax über .NET CLR. Es macht keine der coolen Dinge JavaScript mag anonyme Gehäuse und Funktionsreferenzen, wie Sie sie normalerweise verwenden würden. Es hat eigene Arrays, die nicht mit normalen .net-Arrays übereinstimmen, und Sie werden auf viele Fallstricke und Einschränkungen stoßen, die Sie durch die Verwendung von C # hätten vermeiden können. Unity JavaScript ist nur eine mit Bonbons überzogene Syntaxschicht, die .NET weniger einschüchternd erscheinen lässt, nicht mehr. Es wird dir mehr schaden als nützen.

Grönland
quelle
7

Zunächst einmal würde ich C # über JavaScript für die Programmierung in Unity aus zwei Hauptgründen empfehlen. Der erste Grund ist der starke / schwache Tippunterschied, den Sie sozusagen abgewiesen haben. Ich denke, starkes Tippen funktioniert auf konzeptioneller Ebene besser als schwaches Tippen, aber ehrlich gesagt ist das ein großes Argument, das die Leute haben, und deshalb werde ich mich mehr auf ein spezifisches praktisches Thema konzentrieren: Bereitstellen auf iOS (und möglicherweise auch auf anderen Plattformen, aber das ist das Nur eines, das ich mit Sicherheit kenne, erfordert statische Eingabe. Unity hat sogar eine Direktive "#pragma strict", die aus diesem Grund die statische Eingabe in JavaScript erzwingen kann, aber das bringt mich nur zu meinem zweiten Grund ...

Zweitens ist das JavaScript in Unity nicht ganz dasselbe wie JavaScript in einem Browser. Dies führt zu Problemen, wenn Sie versuchen, Kenntnisse von außerhalb von Unity (dh die meisten Ressourcen zu JavaScript) auf die Programmierung in Unity anzuwenden. Aus diesem Grund bezeichnen viele Unity-Entwickler die Sprache als UnityScript.


Um nun Ihre spezifischen Fragen zu beantworten:

Gibt es einen merklichen Leistungsunterschied?

Nicht wirklich, nein ( einige Details )

Ist der Javascript-Code so verpackt, wie er ist? Und wenn ja, hilft das der Modifizierbarkeit des Spiels?

Hängt von der Plattform ab und nein, das hilft nicht wirklich bei der Modifizierbarkeit

Ist es möglich, Bibliotheken zu verwenden, die für eine Sprache entwickelt wurden, während in der anderen entwickelt wurde?

Ich denke schon (obwohl ich das noch nie gemacht habe, weil alle Bibliotheken, die ich verwende, in C # programmiert wurden)

Ist es möglich, die beiden Sprachen im selben Unity-Projekt zu mischen, indem einige Teile in C # und andere in Javascript codiert werden?

Ja (obwohl ich aus Konsistenzgründen versuche, dies zu vermeiden)

jhocking
quelle
dentedpixel.com/developer-diary/… möchte dies möglicherweise zu Ihrer Antwort hinzufügen. Upvoted.
Grey
interessante linke, fügte hinzu
jhocking