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?
unity
c#
performance
unityscript
Kostas
sumber
sumber
Jawaban:
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.
sumber
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.
sumber
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:
Tidak juga, tidak ( beberapa detail )
Tergantung pada platform, dan tidak ada ini tidak benar-benar membantu modabilitas
Saya kira begitu (walaupun saya tidak pernah perlu melakukan ini, karena semua perpustakaan yang saya gunakan diprogram dalam C #)
Ya (walaupun saya mencoba menghindarinya, untuk alasan konsistensi)
sumber