C # ve UnityScript, Unity geliştirmede nasıl farklılık gösterir? [kapalı]


13

Belirgin dil farklılıkları dışında, Unity3D'de oyun geliştirirken UnityScript ve C # arasındaki fark nedir?

  • Fark edilir bir performans farkı var mı?
  • UnityScript kodu olduğu gibi paketlenmiş mi? Evetse, bu oyunun değiştirilebilirliğine yardımcı olur mu?
  • Bir dil için geliştirilen kütüphaneleri diğerinde gelişirken kullanmak mümkün müdür?
  • İki dil aynı Birlik projesinde karıştırılabilir mi? bazı parçaları C # ve diğerleri UnityScript kodlama?

Yazma bileşeni akıllıca değildir. Ancak C #, DLL içe aktarma gibi ekstra şeyler sağlar. Bunun dışında bir "seçim". Ve tamamen öznel. Unutmayın, kodunuzu yazabileceğiniz Boo da var.
Sidar

2
Objektif cevaplarla yardımcı soru - kapatıldığı haksızlık gibi görünüyor.
UpTheCreek

1
Bu sorunun kapatılmasının iki ana nedeni vardır ve sorunun faydası veya cevapların objektifliği ile ilgileri yoktur. İlk olarak, gönderide birden fazla ilgisiz soru sorulur. İkincisi, sorulan sorulardan bazıları çok fazla tartışma odaklı ve / veya ikisi yazılı olarak uygun olamayacak kadar geniştir. Bir sorunun ne kadar "yararlı" veya popüler olduğu veya cevapların ne kadar iyi olduğu, sorunun site için uygun olup olmadığından bağımsızdır.

Yanıtlar:


12

Fark edilir bir performans farkı var mı?

Hayır. Teknik olarak çok küçük bir performans farkı vardır , ancak çoğu durumda dil seçiminizi dayandıracak kadar önemli değildir.

Bir dil için geliştirilen kütüphaneleri diğerinde gelişirken kullanmak mümkün müdür?

Evet. Kütüphanenin geliştiricisi tarafından önerilen klasör yapısını koruduğunuzdan, bu kütüphaneye herhangi bir dilden erişilebilir. Bu, Unity derleme emriyle ilgilidir . IDE'lerde otomatik tamamlama gibi bazı özellikler seçilen kitaplık için çalışmayabilir. (EDIT: Bu, Visual Studio için ücretsiz UnityVS eklentisi kullanılarak düzeltilebilir .)

Aynı Unity projesindeki iki dili C # ve bazı kısımlarını Javascript ile kodlayarak karıştırmak mümkün mü?

Yine, evet. Her şeyin doğru sırayla derlendiğinden emin olmanız gerektiğinden, hızlı bir şekilde karmaşıklaşır. Teknik olarak mümkün olsa da, bir dil seçmenizi ve ona bağlı kalmanızı tavsiye ederim.

Hangi dilde daha iyi oyun geliştirmeye özgü kaynaklar mevcut (kitaplar, web siteleri, forumlar)?

Söylemesi zor. Forumlara göz atarken, Javascript'in biraz daha fazla öğretici ve kod örneği olduğunu söyleyebilirim. Yine de kodun diğer dile taşınması oldukça kolaydır ve kütüphaneler diller arası kullanılabilir olduğundan, bu büyük bir sorun olmayacaktır.


8

Tüm başlangıç ​​Unity geliştiricilerinin ilk sorusu C # veya JS'dir. Her zaman C # ile devam edin.

Şimdi, şu anda "Ama C # öğrenmek istemiyorum ve zaten biraz JavaScript biliyorum" diye düşünüyor olabilirsiniz .

Ancak göz önünde bulundurmanız gereken yanıltıcı şey Unity JavaScript'in JavaScript olmadığıdır. .NET CLR üzerinden ECMA sözdiziminin yüzeysel bir kaplamasıdır. JavaScript'in anonim muhafazaları ve işlev referanslarını normal şekilde kullandığınız gibi sevdiği harika şeyleri yapmaz. Normal .net dizileriyle uyuşmayan kendi dizileri vardır ve C # kullanarak kaçınabileceğiniz birçok tuzak ve sınırlama ile karşılaşırsınız. Unity JavaScript, sadece .NET'in daha az korkutucu görünmesini sağlamak için tasarlanmış şeker kaplı bir sözdizimi katmanıdır, başka bir şey değildir. Size faydadan çok zarar verecektir.


7

Öncelikle, iki ana nedenden dolayı Unity'de programlama için C # over JavaScript'i öneriyorum. İlk neden, reddettiğiniz güçlü / zayıf yazım farkından kaynaklanmaktadır. Güçlü yazmanın kavramsal düzeyde zayıf yazmadan daha iyi çalıştığını düşünüyorum, ama açıkçası bu insanların sahip olduğu büyük bir argüman ve bu yüzden daha spesifik bir pratik konuya odaklanacağım: iOS'a (ve muhtemelen diğer platformlara da), kesin olarak bildiğim sadece biri) statik yazmayı gerektirir. Unity aslında bu nedenle JavaScript'te statik yazmayı zorlayabilecek bir "#pragma katı" direktifine sahiptir, ancak bu beni ikinci nedenime getiriyor ...

İkincisi, Unity'deki JavaScript bir tarayıcıdaki JavaScript ile tamamen aynı değildir. Bu, Unity dışındaki bilgileri (yani JavaScript hakkındaki kaynakların çoğunu) Unity'deki programlamaya uygulamaya çalıştığınızda sorun yaratır. Bu nedenle, birçok Unity geliştiricisi dile UnityScript adını verir.


Şimdi özel sorularınızı yanıtlamak için:

Fark edilir bir performans farkı var mı?

Gerçekten değil, hayır ( bazı detaylar )

Javascript kodu olduğu gibi paketlenmiş mi? Ve eğer evet ise, bu oyunun şıklığına yardımcı olur mu?

Platforma bağlıdır ve hayır bu gerçekten modaya yardımcı olmaz

Bir dil için geliştirilen kütüphaneleri diğerinde gelişirken kullanmak mümkün müdür?

Sanırım (bunu yapmak için hiç ihtiyacım olmadı, çünkü kullandığım tüm kütüphaneler C # ile programlandı)

Aynı Unity projesindeki iki dili C # ve bazı kısımlarını Javascript ile kodlayarak karıştırmak mümkün mü?

Evet (her ne kadar bundan kaçınmaya çalışsam da, tutarlılık nedenleriyle)


dentedpixel.com/developer-diary/… bunu cevabınıza eklemek isteyebilir. Upvoted.
Gri

ilginç linke, eklendi
jhocking
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.