C # 6 kodum neden Unity'de derlenmiyor?


9

Unity neden C # 6 koduyla çalışamıyor ? Bana her zaman derleyici hataları veriyor. İşte bazı kod örnekleri:

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

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

Kod düzenleyicim olarak Visual Studio kullanıyorum ve hatasız bir şekilde oluşturuyorum. Eğer Unity'de play tuşuna basarsam, inşa edilmez.


unity .net profile upgradeGoogle'da ara
matth

Yanıtlar:


18

Unity, Mono çalışma zamanının .NET3.5 tabanlı eski bir sürümünü kullanır. Özellikler açısından C # 3 ve 4 arasında bir şey kullanır.

Bulduğum bu çevrede googling tarafından. Çalışıp çalışmadığından emin değilim ama araştırmaya değer bir şey olabilir.


Gelecekte daha yeni bir .NET profiline geçme planları olduğunu belirtmek gerekir ( unity3d.com/unity/roadmap ). Ancak, yol haritasında belirtilen önkoşullar göz önüne alındığında, bunun sadece 2016'nın sonlarında en erken zamanda, büyük olasılıkla 2017'de bir zamana kadar olmayacağını
göreceğiz

7
Bu cevaptaki bağlantı çürümüş ve şimdi bir 404 döndürüyor :(
ashes999

7
İnsanların bir özet sunmadan stackexchange'e link göndermemelerinin nedeni budur.
Philipp

Bu araç ( forum.unity3d.com/threads/… ) uyarınca artık araç geliştirilmiyor / desteklenmiyor. Bir alternatif ( bitbucket.org/alexzzzz/unity-c-5.0-and-6.0-integration/src ), kişisel olarak kullanıyorum, kusurları olsa da (Visual Studio bunu unutuyor gibi) veya @BenAdams cevabına bakın , daha iyi haberler için.
Khale_Kitha


4

YouTube'daki bu video , birinin yeni bir proje oluşturarak, hedefi .Net Framework'ü tekrar 3.5 olarak değiştirerek, derleme ve yayın çıktı dizinlerini Unity proje varlıkları klasörüne ekleyerek ve UnityEngine dll referans. Hata ayıklama aynı işlevi görür.


2

Visual Studio'daki derleyici, Unity'deki derleyiciden daha fazla özelliğe sahiptir; bu, bazı kodların (özellikle daha yeni c # özellikleri) Unity'de bir hata vereceği, ancak Visual Studio'da olmadığı anlamına gelir.

Ancak hedef çerçevenizi, Unity'nin düzenleyicinizde kullandığı çerçeveye en yakın çerçeve çerçevesine uyacak şekilde değiştirebilirsiniz. Bunu Xamarin'de Unity için kütüphaneler geliştirirken yaptım, ancak Visual Studio'da da mümkün görünüyor.

Visual Studio'da, DLL projesinin özelliklerinde, Hedef çerçeve özelliğini kullandığınız Unity çerçeve sürümüne ayarlayın. Bu, Unity full, micro veya web base class kütüphaneleri gibi projenizin hedeflediği API uyumluluğuyla eşleşen Unity Base Sınıf Kütüphanesi'dir. Bu, DLL'nizin diğer çerçevelerde veya uyumluluk düzeylerinde bulunan, ancak kullandığınız Unity çerçeve sürümünde bulunmayan çerçeve yöntemlerini çağırmasını önler.

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


Farklı bir hedef çerçeve kullanmanın Windows dışındaki platformlar için oluştururken sorunlara neden olabileceğini belirtmek isteyebilirsiniz.
Philipp
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.