Perbedaan antara backend scripting backend IL2CPP dan Mono2x

14

IL2CPP adalah back-end scripting yang dikembangkan Unity yang dapat Anda gunakan sebagai alternatif untuk Mono ketika membangun proyek untuk beberapa platform. Catatan - IL2CPP hanya tersedia saat membangun untuk platform berikut:

  • Android AppleTV, iOS *, Nintendo 3DS, Nintendo Switch, Playstation 4 Playstation Vita, WebGL *, Windows Store, Xbox One

Saya memiliki proyek (kesatuan 5.2) yang telah beralih untuk penggunaan Android. Saya mencoba untuk beralih scripting saya mundur dari Mono2xke IL2CPPdan yang menunjukkan kepada saya bahwa

IL2CPP pada Andriod bersifat eksperimental dan tidak didukung

Jadi, pertanyaan sederhana saya adalah bahwa jika masih belum didukung maka mengapa opsi tersebut sudah termasuk, apa perbedaan mendasar antara IL2CPP dan Mono2x. Mengapa saya beralih ke backend scripting IL2CPP ? apa pro dan kontra ?

Saya juga sudah memeriksa dalam kesatuan 5.5.2 tidak ada opsi IL2CPP di penyebaran platform windows.

Muhammad Faizan Khan
sumber

Jawaban:

13

Informasi berdasarkan pada Unity versi 2018.2:

Mengutip manual Unity di IL2CPP :

IL2CPP ( Bahasa Menengah Ke C ++ ) adalah backend scripting yang dikembangkan oleh Unity yang dapat Anda gunakan sebagai alternatif untuk Mono ketika membangun proyek untuk berbagai platform. IL2CPP (Compiler terdepan (AOT)) mendukung debugging kode terkelola dengan cara yang sama seperti backend scripting Mono.

Saat membangun proyek menggunakan IL2CPP, Unity mengonversi kode IL dari skrip dan rakitan ke C ++, sebelum membuat file biner asli (.exe, apk, .xap, misalnya) untuk platform yang Anda pilih. Beberapa kegunaan untuk IL2CPP termasuk meningkatkan kinerja, keamanan, dan kompatibilitas platform proyek Unity Anda.

Mengutip tutorial Unity di IL2CPP & Mono :

Setiap Scripting Backend memiliki manfaat dan kelemahan yang harus memengaruhi keputusan Anda yang merupakan pilihan tepat untuk situasi Anda:

IL2CPP:

  • Pembuatan kode sangat meningkat dibandingkan dengan Mono.
  • Kode skrip debug dalam C ++ dari atas ke bawah adalah mungkin.
  • Anda dapat mengaktifkan stripping kode Engine untuk mengurangi ukuran kode.
  • Waktu build lebih panjang daripada dengan Mono.
  • Hanya mendukung kompilasi Ahead of Time (AOT).

Mono:

  • Waktu pembuatan lebih cepat dari IL2CPP.
  • Mendukung lebih banyak perpustakaan yang dikelola karena kompilasi Just In Time (JIT).
  • Mendukung eksekusi kode runtime.
  • Harus mengirim rakitan terkelola (file .dll yang menghasilkan mono atau .net)

Poin Penting:

  • Arsitektur Target default di Pengaturan Android Player adalah armv7 dan x86 dengan IL2CPP dan Mono Scripting Backend.
  • Mono tidak didukung di UWP atau iOS 11 ke atas. Arsitektur default di Pengaturan iOS Player adalah armv7 dan arm64 dengan IL2CPP Scripting Backend.

  • UWP build hanya mendukung IL2CPP dan .NET, .NET scripting backend (Deprecated) menggunakan Microsoft .NET untuk mendukung scripting.

Sanket Prabhu
sumber
1
Saya pikir jawaban Anda tidak ada referensi. Saya melihat daftar IL2CPP / Mono adalah teks yang sama dengan halaman tutorial IL2CPP & Mono Unity , dan 2 paragraf pertama memiliki teks yang sama dengan halaman manual IL2CPP Unity dalam urutan yang berbeda. Harap edit jawaban Anda untuk menyertakan referensi, lihat pusat bantuan untuk info lebih lanjut.
Sonny
3

IL2CPP adalah back-end scripting yang dikembangkan Unity yang dapat Anda gunakan sebagai alternatif untuk Mono ketika membangun proyek untuk beberapa platform. Saat Anda memilih untuk membangun proyek menggunakan IL2CPP, Unity mengonversi kode IL (kadang-kadang disebut CIL - Bahasa Antara atau Bahasa Antara) dari skrip dan rakitan menjadi kode C ++, sebelum membuat file biner asli (.exe, apk, .xap, untuk contoh) untuk platform yang Anda pilih. Beberapa kegunaan untuk IL2CPP termasuk meningkatkan kinerja, keamanan, dan kompatibilitas platform proyek Unity Anda.

Sumber

IL2CPP adalah platform eksekusi * yang seharusnya setara dengan yang lebih cepat dari mono. Dalam konteks ini "percobaan" menempatkan penekanan kuat pada kata "seharusnya" dalam kalimat sebelumnya.

Fitur eksperimental dirilis karena alasan yang sama dengan perangkat lunak beta yang dirilis secara publik: Perangkat lunak ini cukup baik untuk digunakan, dan pengembang menginginkan laporan bug dan umpan balik lainnya dari berbagai pengguna sehingga mereka dapat sampai pada titik di mana perangkat lunak siap atau rilis yang sebenarnya.


* IL2CPP tidak berfungsi untuk kode yang digunakan murni melalui refleksi, yang akan terjadi ketika menggunakan refleksi, serialisasi, atau generik pada kelas yang tidak pernah dipanggil secara langsung dan karenanya dilepaskan dari build. Pembatasan yang sama saat ini berlaku untuk Mono pada platform yang menggunakan batasan kompilasi Ahead of Time.

Peter
sumber
Jadi masih belum dewasa saya menggunakan 5.2 tidak ada pengalaman tentang 5.5. atau 5.6. selain itu apa kelebihannya untuk bergeser di il2cpp?
Muhammad Faizan Khan
Ini matang untuk beberapa platform. Sudah ada sejak sebelum Unity 5 untuk setidaknya iOS. Saya pikir bahkan Android IL2CPP tidak ditandai eksperimental di versi terbaru. Saya menemukan lompatan dari Unity 4 menjadi 5 lebih lambat di android hingga saya mulai menggunakan IL2CPP. Ini terasa lebih cepat pada perangkat pengujian saya.
Tartle Wizard
1
Karena IL2CPP dikompilasi ke kode mesin Ahead-of-Time, ia memiliki beberapa batasan tambahan tentang refleksi dan penggunaan obat generik . Kompiler Just-in-Time Mono memiliki informasi untuk introspeksi & menghasilkan kode yang dibutuhkan dengan cepat, tetapi untuk AoT semua kode yang diperlukan harus mudah dideteksi pada waktu membangun.
DMGregory