Differenza tra back-end di script di unità IL2CPP e Mono2x


14

IL2CPP è un back-end di scripting sviluppato da Unity che puoi usare come alternativa a Mono quando costruisci progetti per alcune piattaforme. Nota: IL2CPP è disponibile solo quando si crea per le seguenti piattaforme:

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

Ho un progetto (unità 5.2) che è passato alla distribuzione Android. Ho cercato di cambiare il mio script sostenuto da Mono2xal IL2CPPe la sua mi dimostrando che

IL2CPP su Andriod è sperimentale e non supportato

Quindi, la mia semplice domanda è che se non è ancora supportato, perché l'opzione ha incluso, qual è la differenza fondamentale tra IL2CPP e Mono2x. Perché sono passato al back-end di script IL2CPP ? quali sono i suoi pro e contro ?

Ho anche verificato in unità 5.5.2 non esiste l'opzione IL2CPP nella distribuzione della piattaforma Windows.

Risposte:


13

Le informazioni si basano sulla versione Unity 2018.2:

Citando il manuale Unity su IL2CPP :

IL2CPP ( Intermediate Language To C ++ ) è un back-end di scripting sviluppato da Unity che puoi usare come alternativa a Mono quando costruisci progetti per varie piattaforme. IL2CPP ( un compilatore AOT) supporta il debug del codice gestito allo stesso modo del back-end di scripting Mono.

Quando si crea un progetto utilizzando IL2CPP, Unity converte il codice IL da script e assembly in C ++, prima di creare un file binario nativo (.exe, apk, .xap, ad esempio) per la piattaforma scelta. Alcuni degli usi di IL2CPP includono l'aumento delle prestazioni, della sicurezza e della compatibilità della piattaforma dei progetti Unity.

Citando il tutorial di Unity su IL2CPP e Mono :

Ogni back-end di scripting presenta vantaggi e svantaggi che dovrebbero influenzare la tua decisione su quale sia la scelta giusta per la tua situazione:

IL2CPP:

  • La generazione del codice è notevolmente migliorata rispetto a Mono.
  • È possibile eseguire il debug del codice script in C ++ dall'alto verso il basso.
  • È possibile abilitare lo stripping del codice Engine per ridurre la dimensione del codice.
  • I tempi di costruzione sono più lunghi rispetto a Mono.
  • Supporta solo la compilazione di Ahead of Time (AOT).

Mono:

  • Tempi di costruzione più rapidi rispetto a IL2CPP.
  • Supporta più librerie gestite grazie alla compilazione Just In Time (JIT).
  • Supporta l'esecuzione del codice di runtime.
  • Deve spedire assembly gestiti (file .dll che producono mono- o .net).

Punti importanti:

  • L'architettura di destinazione predefinita nelle impostazioni del lettore Android è armv7 e x86 con IL2CPP e Mono Scripting Backend.
  • Mono non è supportato su UWP o iOS 11 e versioni successive. L'architettura predefinita nelle impostazioni del lettore iOS è armv7 e arm64 con IL2CPP Scripting Backend.

  • La build UWP supporta solo IL2CPP e .NET, il back-end di script .NET (obsoleto) utilizza .NET di Microsoft per alimentare gli script.


1
Penso che alla tua risposta manchino riferimenti. Vedo che l'elenco IL2CPP / Mono è lo stesso testo della pagina tutorial di Unity IL2CPP e Mono , e i primi 2 paragrafi hanno lo stesso testo della pagina di manuale IL2CPP di Unity in un ordine diverso. Modifica la tua risposta per includere riferimenti, vedi il centro assistenza per ulteriori informazioni.
sonny

3

IL2CPP è un back-end di scripting sviluppato da Unity che puoi usare come alternativa a Mono quando costruisci progetti per alcune piattaforme. Quando si sceglie di creare un progetto utilizzando IL2CPP, Unity converte il codice IL (a volte chiamato CIL - Intermediate Language o Common Intermediate Language) da script e assembly in codice C ++, prima di creare un file binario nativo (.exe, apk, .xap, per esempio) per la piattaforma scelta. Alcuni degli usi di IL2CPP includono l'aumento delle prestazioni, della sicurezza e della compatibilità della piattaforma dei progetti Unity.

fonte

IL2CPP è una piattaforma di esecuzione * apparentemente equivalente * che è più veloce di mono. In questo contesto "sperimentale" pone una forte enfasi sulla parola "presumibilmente" nella frase precedente.

Le funzioni sperimentali vengono rilasciate per lo stesso motivo per cui il software beta viene rilasciato pubblicamente: il software è abbastanza buono da usare e gli sviluppatori vogliono segnalazioni di bug e altri feedback da una vasta gamma di utenti in modo che possano arrivare al punto in cui il software è pronto o la versione attuale.


* IL2CPP non funziona per il codice utilizzato esclusivamente tramite reflection, che si verificherà quando si utilizzano reflection, serializzazione o generici su classi che non vengono mai chiamate direttamente e quindi eliminate dalla build. La stessa restrizione si applica attualmente a Mono su piattaforme che utilizzano restrizioni di compilazione Ahead of Time.


Quindi non è ancora maturo ma sto usando 5.2 nessuna esperienza su 5.5. o 5.6. inoltre quali sono i pro e contro che si spostano su il2cpp?
Muhammad Faizan Khan,

È maturo per alcune piattaforme. È in circolazione da prima di Unity 5 per almeno IOS. Penso che anche Android IL2CPP non sia contrassegnato come sperimentale nelle ultime versioni. Ho trovato il salto da Unity 4 a 5 più lento su Android fino a quando non ho iniziato a utilizzare IL2CPP. È notevolmente più veloce sui miei dispositivi di test.
Tartle Wizard

1
Poiché IL2CPP si sta compilando con il codice macchina Ahead-of-Time, ha alcune restrizioni aggiuntive per quanto riguarda la riflessione e l'uso dei generici . Il compilatore Just-in-Time di Mono ha le informazioni a portata di mano per introspettare e generare al volo il codice necessario, ma per AoT tutto il codice necessario deve essere facile da rilevare al momento della compilazione.
DMGregory
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.