Unity utilizza una versione diversa di C # o è sempre la stessa? Sembra diverso dal normale C # ma ci sono alcuni elementi C # regolari.
Unity utilizza una versione diversa di C # o è sempre la stessa? Sembra diverso dal normale C # ma ci sono alcuni elementi C # regolari.
Risposte:
Come indicato in altre risposte, Unity 4.x utilizza una versione modificata di Mono basata su Mono 2.6
Per la maggior parte, questo è compatibile con .Net 2.0 , anche se non sono riuscito a rintracciare un elenco di compatibilità specifico Mono 2.6.
Sembra diverso dal normale C # ma ci sono alcuni elementi C # regolari.
Come menzionato in uno dei commenti sulla tua domanda, ciò è probabilmente dovuto alla particolare API di scripting di Unity piuttosto che alla lingua stessa.
Ad esempio, molto codice in un tipico progetto Unity è contenuto in sottoclassi di una classe chiamata MonoBehavior. Si tratta di componenti rilasciati su GameObjects all'interno dell'ambiente Unity Editor. Questa architettura porta a un codice C # che sembra diverso dal tipico codice C # (per me comunque) in diversi modi:
In pratica, la più grande caratteristica del linguaggio C # che mi manca nell'attuale versione C # di Unity è il supporto per le parole chiave async e relative e funzionalità. Un concetto simile in Unity sono le coroutine . Questi vengono eseguiti sul thread principale, quindi non sono veri asincroni, ma consentono la suddivisione del codice in esecuzione su più frame. Il multithreading di livello inferiore è ancora supportato.
async
in C # non è nemmeno vero asincrono come in multi-thread - funziona anche sul thread principale. Le maggiori differenze, dal punto di vista dell'utilizzo, tra coroutine e asincrono sono i tempi di esecuzione del codice.
Unity 4 utilizza Mono 2.6 , che è un'implementazione completa del framework .NET, incluso il linguaggio C #.
Non sono sicuro di come appaia diverso, ma tieni presente che Unity supporta diverse lingue, che funzionano tutte sullo stesso runtime Mono. È possibile che stai confondendo C # con UnityScript ?
Unity utilizza C # normale.
Inoltre, quando scrivi C # in Unity utilizzerai molte delle loro librerie, ma per quanto ne so, tutto ciò che è possibile in C # è possibile in Unity, ad eccezione delle differenze elencate di seguito:
Le aree più specifiche di .Net relative a Windows Form e ASP sono vietate tramite Unity.
Sebbene sia possibile utilizzare Visual Studio per errori di modifica e di compilazione, è necessario creare ed eseguire l'IDE di Unity.
Unity utilizza Mono, che è un'implementazione open source di .Net, il che significa che ci sono lievi differenze.
La domanda se la versione C # utilizzata da Unity sia diversa da un C # "normale" ha ricevuto risposta da altri post. Dal momento che stai chiedendo esplicitamente alcuni elementi che potrebbero differire da una versione così regolare, condividerò l'unica differenza minore che ho notato confrontando il C # che uso al lavoro (ad esempio C # 4.0 in Visual Studio 2010 e versioni successive) e C # in Unity, che è che non riesco a utilizzare i valori predefiniti per i parametri nelle definizioni delle funzioni. che è necessario impostare il progetto con maggiore attenzione al fine di utilizzare una versione più recente di C #. Vedi questo link per ulteriori spiegazioni.
Modifica: lascio questa risposta dal momento che so che questo è un malinteso che accade a molte persone.