Apa perbedaan antara C # dan UnityScript dalam pengembangan Unity? [Tutup]

13

Selain perbedaan bahasa yang jelas, bagaimana perbedaan UnityScript dan C # ketika mengembangkan game di Unity3D?

  • Apakah ada perbedaan kinerja yang nyata?
  • Apakah kode UnityScript dikemas apa adanya? Jika ya, apakah ini membantu moddabilitas game?
  • Apakah mungkin untuk menggunakan perpustakaan yang dikembangkan untuk satu bahasa sementara mengembangkan yang lain?
  • Bisakah kedua bahasa dicampur dalam proyek Persatuan yang sama; mengkode beberapa bagian dalam C # dan yang lainnya di UnityScript?
Kostas
sumber
Ada komponen menulis non bijaksana. Tetapi C # memungkinkan untuk hal-hal tambahan seperti impor DLL. Selain itu itu adalah "pilihan". Dan sepenuhnya subjektif. Jangan lupa, ada juga Boo di mana Anda dapat menulis kode Anda.
Sidar
2
Pertanyaan yang bermanfaat dengan jawaban yang objektif - tampaknya tidak adil karena ditutup.
UpTheCreek
1
Ada dua alasan utama pertanyaan ini ditutup, dan tidak ada hubungannya dengan kegunaan pertanyaan atau obyektivitas jawaban. Pertama, pos menanyakan lebih dari satu pertanyaan yang tidak terkait. Kedua, beberapa pertanyaan yang diajukan terlalu berorientasi pada diskusi dan / atau dua pertanyaan tidak layak untuk ditulis. Seberapa "membantu" atau populernya suatu pertanyaan, atau seberapa bagus jawabannya, keduanya terlepas dari apakah pertanyaan tersebut sesuai atau tidak untuk situs tersebut.

Jawaban:

12

Apakah ada perbedaan kinerja yang nyata?

Tidak. Secara teknis ada perbedaan kinerja yang sangat kecil , tetapi tidak cukup signifikan untuk dijadikan dasar bahasa pilihan Anda dalam kebanyakan kasus.

Apakah mungkin untuk menggunakan perpustakaan yang dikembangkan untuk satu bahasa sementara mengembangkan yang lain?

Iya. Selama Anda memastikan untuk menjaga struktur folder yang direkomendasikan oleh pengembang perpustakaan, perpustakaan itu dapat diakses dari bahasa apa pun. Ini ada hubungannya dengan urutan kompilasi Unity . Beberapa fitur dalam IDE, seperti pelengkapan otomatis, mungkin tidak berfungsi untuk pustaka yang dipilih. (EDIT: ini dapat diperbaiki dengan menggunakan plugin UnityVS gratis untuk Visual Studio.)

Apakah mungkin untuk mencampur dua bahasa dalam proyek Unity yang sama dengan mengkode beberapa bagian dalam C # dan yang lainnya dalam Javascript?

Sekali lagi, ya. Ini menjadi rumit dengan cepat, karena Anda harus memastikan semuanya dikompilasi dalam urutan yang benar. Meskipun secara teknis memungkinkan, saya sarankan Anda memilih satu bahasa dan tetap menggunakannya.

Bahasa apa yang memiliki sumber daya khusus pengembang game yang lebih baik (buku, situs web, forum)?

Sulit untuk dikatakan. Dari menjelajah forum, saya akan mengatakan Javascript memiliki sedikit lebih banyak tutorial dan contoh kode. Kode umumnya cukup mudah untuk port ke bahasa lain, dan karena perpustakaan dapat digunakan lintas bahasa, ini kemungkinan besar tidak akan menjadi masalah besar.

Lokkij
sumber
8

Pertanyaan pertama yang dimiliki semua pengembang Unity adalah C # atau JS. Selalu gunakan C #.

Sekarang, saat ini Anda mungkin berpikir, "Tapi saya tidak ingin belajar C # dan saya sudah tahu sedikit tentang JavaScript."

Tetapi hal yang menyesatkan yang perlu Anda pertimbangkan adalah bahwa Unity JavaScript bukan JavaScript. Ini adalah lapisan permukaan dari sintaks ECMA atas .NET CLR. Ini tidak melakukan hal-hal keren yang dilakukan JavaScript seperti lampiran anonim dan referensi fungsi seperti yang akan Anda gunakan secara normal. Ini memiliki array sendiri yang tidak cocok dengan array .net normal, dan Anda akan menemukan banyak jebakan dan batasan yang bisa Anda hindari dengan menggunakan C #. Unity JavaScript hanyalah lapisan sintaks berlapis permen yang dirancang untuk membuat .NET tampak kurang menakutkan, tidak lebih. Itu akan lebih banyak merugikan Anda daripada kebaikan.

tanah penggembalaan
sumber
7

Pertama, saya akan merekomendasikan C # over JavaScript untuk pemrograman di Unity karena dua alasan utama. Alasan pertama adalah perbedaan pengetikan yang kuat / lemah yang Anda abaikan. Saya pikir pengetikan yang kuat bekerja lebih baik daripada pengetikan yang lemah pada tingkat konseptual, tetapi terus terang itu adalah argumen besar yang dimiliki orang dan jadi saya akan lebih fokus pada masalah praktis tertentu: Menyebarkan ke iOS (dan mungkin juga platform lain, tapi itulah hanya satu yang saya tahu pasti) membutuhkan pengetikan statis. Unity sebenarnya bahkan memiliki arahan "#pragma strict" yang dapat memaksa pengetikan statis dalam JavaScript untuk alasan ini, tetapi itu hanya membawa saya ke alasan kedua ...

Kedua, JavaScript di Unity tidak sepenuhnya sama dengan JavaScript di browser. Ini menciptakan masalah ketika Anda mencoba menerapkan pengetahuan dari luar Unity (mis. Mayoritas sumber daya tentang JavaScript) ke pemrograman di Unity. Inilah sebabnya mengapa banyak pengembang Unity menyebut bahasa tersebut sebagai UnityScript.


Sekarang untuk menjawab pertanyaan spesifik Anda:

Apakah ada perbedaan kinerja yang nyata?

Tidak juga, tidak ( beberapa detail )

Apakah kode javascript dikemas apa adanya? Dan jika ya, apakah ini membantu modabilitas game?

Tergantung pada platform, dan tidak ada ini tidak benar-benar membantu modabilitas

Apakah mungkin untuk menggunakan perpustakaan yang dikembangkan untuk satu bahasa sementara mengembangkan yang lain?

Saya kira begitu (walaupun saya tidak pernah perlu melakukan ini, karena semua perpustakaan yang saya gunakan diprogram dalam C #)

Apakah mungkin untuk mencampur dua bahasa dalam proyek Unity yang sama dengan mengkode beberapa bagian dalam C # dan yang lainnya dalam Javascript?

Ya (walaupun saya mencoba menghindarinya, untuk alasan konsistensi)

jhocking
sumber
dentedpixel.com/developer-diary/… mungkin ingin menambahkan ini ke jawaban Anda. Terpilih.
Gray
link menarik, ditambahkan
jhocking