Perché il mio codice C # 6 non viene compilato in Unity?


9

Perché Unity non funziona con il codice C # 6 ? Mi dà sempre errori del compilatore. Ecco alcuni esempi di codice:

using static System.Convert;
using static System.Environment;

$"€{punten}{NewLine}€{Money}{NewLine}€{KilledEnemies}{NewLine}€{bonus}{NewLine}€{total}";

Uso Visual Studio come editor di codice e costruisco senza errori. Se premo play in Unity non si costruirà.


Cerca unity .net profile upgradesu Google
matth

Risposte:


18

Unity utilizza una vecchia versione del runtime Mono basato su .NET3.5. Usa qualcosa tra C # 3 e 4 in termini di funzionalità.

Ho trovato questo googling intorno. Non sono sicuro che funzioni ma potrebbe essere qualcosa che vale la pena indagare.


Vale la pena notare che in futuro ci sono piani per l'aggiornamento a un nuovo profilo .NET ( unity3d.com/unity/roadmap ). Tuttavia, dati i prerequisiti indicati nella tabella di marcia, vedremo che ciò accadrà solo alla fine del 2016, molto probabilmente non prima del 2017.
evilcandybag

7
Il link in questa risposta è decaduto e ora restituisce un 404 :(
ashes999

7
Questo è il motivo per cui le persone non dovrebbero pubblicare link su stackexchange senza fornire una sinossi.
Philipp,

Per ( forum.unity3d.com/threads/… ) tale strumento non è più sviluppato / supportato. Un'alternativa è ( bitbucket.org/alexzzzz/unity-c-5.0-and-6.0-integration/src ), che uso personalmente, anche se ha dei difetti (come Visual Studio che se ne dimentica), o guarda la risposta di @BenAdams , di seguito, per notizie migliori.
Khale_Kitha,


4

Questo video su YouTube mostra come qualcuno è riuscito a far funzionare la sintassi C # 6 su Unity creando un nuovo progetto, cambiando la destinazione .Net Framework di nuovo a 3.5, impostando le directory di output di compilazione e rilascio nella cartella delle risorse del progetto Unity e aggiungendo un riferimento alla dll UnityEngine. Il debug sembra funzionare allo stesso modo.


2

Il compilatore in Visual Studio ha più funzionalità rispetto al compilatore in Unity, il che significa che alcuni codici (in particolare le nuove funzionalità c #) genereranno un errore in Unity, ma non in Visual Studio.

Puoi tuttavia modificare il tuo framework di destinazione in modo che corrisponda a quello più vicino a quello che Unity utilizza nel tuo editor. L'ho fatto in Xamarin durante lo sviluppo di librerie per Unity, ma sembra che sia possibile anche in Visual Studio.

In Visual Studio, nelle proprietà del progetto DLL, imposta la proprietà Framework di destinazione sulla versione del framework Unity che stai utilizzando. Questa è la libreria di classi Unity Base che corrisponde alla compatibilità API target del progetto, come le librerie di classi Unity complete, micro o web base. Ciò impedisce alla DLL di chiamare metodi framework esistenti in altri framework o livelli di compatibilità, ma che potrebbero non esistere nella versione del framework Unity in uso.

https://msdn.microsoft.com/en-us/library/dn940020.aspx


Si consiglia di sottolineare che l'utilizzo di un framework di destinazione diverso può causare problemi durante la creazione di piattaforme diverse da Windows.
Philipp
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.