Verwendet Unity eine andere Version von C # oder ist das alles gleich? Es sieht anders aus als reguläres C #, enthält jedoch einige reguläre C # -Elemente.
Verwendet Unity eine andere Version von C # oder ist das alles gleich? Es sieht anders aus als reguläres C #, enthält jedoch einige reguläre C # -Elemente.
Antworten:
Wie in anderen Antworten angegeben, verwendet Unity 4.x eine modifizierte Version von Mono, die auf Mono 2.6 basiert
Zum größten Teil ist dies mit .Net 2.0 kompatibel , obwohl es mir nicht gelungen ist, eine Mono 2.6-spezifische Kompatibilitätsliste aufzuspüren.
Es sieht anders aus als reguläres C #, aber es gibt einige reguläre C # -Elemente.
Wie in einem der Kommentare zu Ihrer Frage erwähnt, liegt dies wahrscheinlich eher an der speziellen Skript-API von Unity als an der Sprache selbst.
In einem typischen Unity-Projekt ist beispielsweise viel Code in Unterklassen einer Klasse namens MonoBehavior enthalten. Dies sind Komponenten, die in GameObjects in der Unity Editor-Umgebung abgelegt werden. Diese Architektur führt in vielerlei Hinsicht zu C # -Code, der (für mich) anders aussieht als typischer C # -Code:
Praktisch ist die größte C # -Sprachenfunktion, die ich in der aktuellen C # -Version von Unity vermisse, die Unterstützung für asynchrone und verwandte Schlüsselwörter und Funktionen. Ein ähnliches Konzept in Unity sind Koroutinen . Diese werden auf dem Hauptthread ausgeführt, sind also nicht asynchron, ermöglichen jedoch das Aufteilen von Code mit langer Laufzeit über mehrere Frames. Multithreading auf niedrigerer Ebene wird weiterhin unterstützt.
async
in C # ist es auch nicht asynchron wie in Multithread - es läuft auch auf dem Hauptthread. Die größten Unterschiede aus Sicht der Nutzung zwischen Coroutinen und Async sind die Zeiten, zu denen der Code ausgeführt wird.
Unity 4 verwendet Mono 2.6 , eine vollständige Implementierung des .NET-Frameworks, einschließlich der C # -Sprache.
Ich bin mir nicht sicher, wie es anders aussieht, aber denke daran, dass Unity mehrere Sprachen unterstützt, die alle auf der gleichen Mono-Laufzeit arbeiten. Ist es möglich, dass Sie C # mit UnityScript verwechseln ?
Unity verwendet reguläres C #.
Wenn Sie C # in Unity schreiben, werden Sie viele ihrer Bibliotheken verwenden, aber soweit ich weiß, ist in Unity alles möglich, abgesehen von den unten aufgeführten Unterschieden:
Speziellere .Net-Bereiche in Bezug auf Windows Forms und ASP sind durch Unity nicht zulässig.
Während Sie Visual Studio zum Bearbeiten und Kompilieren von Fehlern verwenden können, müssen Sie die Unity-IDE erstellen und ausführen.
Unity verwendet Mono, eine Open-Source-Implementierung von .Net, was bedeutet, dass es geringfügige Unterschiede gibt.
Die Frage, ob sich die von Unity verwendete C # -Version von einer "normalen" C # -Version unterscheidet, wurde von anderen Posts beantwortet. Da Sie fragen explizit für bestimmte Elemente , die aus einer solchen regulären Version abweichen werde ich die nur geringfügigen Unterschied teile ich dann bemerkt , wenn die C # I Verwendung bei der Arbeit (dh C # 4.0 in Visual Studio 2010 und höher) und C # in der Einheit zu vergleichen, die ist, dass ich keine Standardwerte für Parameter in Funktionsdefinitionen verwenden kann. Das heißt, Sie müssen Ihr Projekt sorgfältiger einrichten, um eine neuere Version von C # zu verwenden. Weitere Erklärungen finden Sie unter diesem Link.
Edit: Ich lasse diese Antwort, da, soweit ich weiß, dies ein Missverständnis ist, das ziemlich vielen Menschen passiert.