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.
asyncin 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.