Mengapa kode C # 6 saya tidak dikompilasi di Unity?


9

Mengapa Unity tidak dapat bekerja dengan kode C # 6 ? Itu selalu memberi saya kesalahan kompiler. Berikut ini beberapa contoh kode:

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

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

Saya menggunakan Visual Studio sebagai editor kode saya dan membangun tanpa kesalahan. Jika saya menekan play di Unity itu tidak akan dibangun.


Cari unity .net profile upgradedi Google
matth

Jawaban:


18

Unity menggunakan versi lama runtime Mono yang didasarkan pada .NET3.5. Ini menggunakan sesuatu antara C # 3 dan 4 dalam hal fitur.

Saya menemukan ini dengan googling. Tidak yakin apakah itu berhasil tetapi mungkin sesuatu yang layak diselidiki.


Perlu dicatat bahwa ada rencana untuk meningkatkan ke profil .NET yang lebih baru di masa mendatang ( unity3d.com/unity/roadmap ). Namun, mengingat prasyarat yang dinyatakan dalam peta jalan kita akan melihat bahwa hanya terjadi pada akhir 2016 paling awal, kemungkinan besar tidak sampai pada suatu waktu di 2017.
evilcandybag

7
Tautan dalam jawaban ini membusuk dan sekarang mengembalikan 404 :(
ashes999

7
Ini adalah alasan mengapa orang tidak boleh memposting tautan di stackexchange tanpa memberikan sinopsis.
Philipp

Per ( forum.unity3d.com/threads/… ) alat itu tidak lagi dikembangkan / didukung. Alternatifnya adalah ( bitbucket.org/alexzzzz/unity-c-5.0-and-6.0-integration/src ), yang saya gunakan secara pribadi, meskipun memiliki kekurangan (seperti Visual Studio melupakannya), atau melihat ke jawaban @BenAdams , di bawah, untuk berita yang lebih baik.
Khale_Kitha


4

Video ini di YouTube menunjukkan bagaimana seseorang bisa mendapatkan sintaks C # 6 bekerja di Unity dengan membuat proyek baru, mengubah target .Net Framework kembali menjadi 3,5, mengatur build dan merilis direktori output ke folder aset proyek Unity, dan menambahkan referensi ke dll UnityEngine. Debugging tampaknya berfungsi sama.


2

Compiler di Visual Studio memiliki lebih banyak fitur daripada compiler di Unity yang berarti bahwa beberapa kode (terutama fitur c # yang lebih baru) akan memberikan kesalahan dalam Unity, tetapi tidak di Visual Studio.

Namun Anda dapat mengubah kerangka target Anda untuk mencocokkan yang paling dekat dengan apa yang digunakan Unity di editor Anda. Saya telah melakukan ini di Xamarin ketika mengembangkan perpustakaan untuk Unity, tetapi sepertinya itu mungkin di Visual Studio juga.

Di Visual Studio, di properti proyek DLL, setel properti kerangka kerja Target ke versi kerangka kerja Unity yang Anda gunakan. Ini adalah Perpustakaan Kelas Basis Unity yang cocok dengan kompatibilitas API yang ditargetkan proyek Anda, seperti perpustakaan kelas basis penuh, mikro, atau web. Ini mencegah DLL Anda memanggil metode kerangka kerja yang ada di kerangka kerja lain atau tingkat kompatibilitas, tetapi yang mungkin tidak ada di versi kerangka kerja Unity yang Anda gunakan.

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


Anda mungkin ingin menunjukkan bahwa menggunakan kerangka kerja target yang berbeda dapat menyebabkan masalah saat membangun untuk platform lain selain Windows.
Philipp
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.