Bu yazımda, Unity 3D projelerinizde en güncel .Net Framework kütüphanelerini ve en güncel C# sürümünü kullanmak için izlemeniz gereken adımlardan bahsettim.
Unity’de Task
Bildiğiniz üzere System.Threading.Tasks varsayılan Unity 3D proje template’inde desteklenmiyor ve kullanılamıyor. Arkaplan işlemleri ve zamanlı görevler için IEnumerator kullanmamız gerekiyor. Eğer güncel C# sürümünü kullanabiliyor olsaydık kullanımı çok daha kolay olan Taskları yazabiliyor olacaktık.
Unity içinde Lambda Expression
Unity halihazırda tüm LINQ kütüphanesini ve metotlarını desteklerken içlerindeki Func‘lar için lambda expression ile parametre göndermemize izin veriyor. Fakat yeni C# sürümlerinde gelen Property’lerin get set metotlarını lambda ile yazabilme, tek satırlık matotları labda ile kısa bir şekilde yazabilme gibi kısaca Action’ları lambda ile üretebilmeyi destekleyemiyor.
Unity 3D .Net Framework
Unity 3D varsayılan olarak .Net Framework 3.5 ve C# 4 desteklemektedir. Peki neden son sürümleri desteklemiyor?
Bunun sebebi tamamıyla Unity’nin çalışma mantığıdır. Unity C# ile yazılmış script’lerinizi alır, C++ kütüphanelerine dönüştürmek ve C++ olarak algılayabilmesi için serialize eder. Bundan dolayı dilde yapılan en ufak değişikliğin de nasıl serialize edilmesi veya nasıl algılanması gibi tanımlamaların sürekli eklenmesi gerekmekte. Bu da tahmin edebileceğiniz gibi stabil hale gelene kadar zaman alan bir süreç. Fakat Unity 3D bize .Net Framework 4.6.x sürümlerini kullanabilmemize imkan sağlıyor. Fakat stabil olamayabileceğini de belirtmekte. Ben henüz herhangi bir sıkıntı yaşamadım.
Öncelikle Unity içinde File>Build Settings ayarlarına gidiyoruz. Aşağıdaki ekran gelecek:
Bu ayarlardan Other Settings bölümüne gidip buradan Scripting Runtime Version ayarına tıklayıp buradan Experimental(.Net 4.6 Equivalent) seçeneğini seçiyoruz.
Bu işlemden sonra Unity 3D’yi yeniden başlatmanızı isteyecek. Restart’a basarak yeniden açılmasını sağlayabilirsiniz. Yeniden açıldığında artık .Net Framework’ün yeni kütüphanelerini ve C#’ın güncel halini sorunsuz bir şekilde kullanabiliyor olacaksınız.
- Eğer herhangi bir editör açıksa Unity 3D ile editörünüzü de yeniden başlatmalısınız. (Visual Studio, Monodevelop vs.)