ความแตกต่างระหว่างแบ็กเอนด์สคริปต์ unity IL2CPP และ Mono2x


15

IL2CPPเป็นแบ็คเอนด์สคริปต์ที่พัฒนาโดย Unity ซึ่งคุณสามารถใช้เป็นทางเลือกแทน Mono เมื่อสร้างโปรเจ็กต์สำหรับบางแพลตฟอร์ม หมายเหตุ - IL2CPP จะใช้ได้เฉพาะเมื่อสร้างสำหรับแพลตฟอร์มต่อไปนี้:

  • Android AppleTV, iOS *, Nintendo 3DS, สวิตช์ Nintendo, Playstation 4 Playstation Vita, WebGL *, Windows Store, Xbox One

ฉันมีโครงการ (unity 5.2) ซึ่งได้เปลี่ยนมาใช้งานสำหรับ Android ฉันพยายามสลับสคริปต์ของฉันที่สำรองไว้จากMono2xเป็นIL2CPPและแสดงให้ฉันเห็นว่า

IL2CPP บน Andriod ทดลองและไม่ได้รับการสนับสนุน

ดังนั้นคำถามง่ายๆของฉันคือถ้ามันยังไม่ได้รับการสนับสนุนทำไมตัวเลือกถึงรวมแล้วความแตกต่างพื้นฐานระหว่าง IL2CPP และ Mono2x คืออะไร เหตุใดฉันจึงเปลี่ยนมาใช้แบ็กเอนด์การเขียนสคริปต์IL2CPP ข้อดีและข้อเสียของมันคืออะไร?

ฉันได้ตรวจสอบด้วยความสามัคคี 5.5.2 ไม่มีตัวเลือก IL2CPP ในการปรับใช้แพลตฟอร์ม Windows

คำตอบ:


14

ข้อมูลอ้างอิงจาก Unity รุ่น 2018.2:

การอ้างอิงคู่มือ Unity บน IL2CPP :

IL2CPP ( Intermediate Language To C ++ ) เป็นแบ็กเอนด์สคริปต์ที่พัฒนาโดย Unity ซึ่งคุณสามารถใช้เป็นทางเลือกแทน Mono เมื่อสร้างโปรเจ็กต์สำหรับแพลตฟอร์มต่างๆ IL2CPP ( คอมไพเลอร์ล่วงหน้า (AOT) ล่วงหน้า)สนับสนุนการดีบักโค้ดที่ได้รับการจัดการในลักษณะเดียวกับแบ็กเอนด์สคริปต์โมโน

เมื่อสร้างโครงการโดยใช้ IL2CPP Unity จะแปลงรหัส IL จากสคริปต์และชุดประกอบเป็น C ++ ก่อนสร้างไฟล์ไบนารีดั้งเดิม (เช่น. exe, apk, .xap เป็นต้น) สำหรับแพลตฟอร์มที่คุณเลือก การใช้งานบางอย่างสำหรับ IL2CPP รวมถึงการเพิ่มประสิทธิภาพความปลอดภัยและความเข้ากันได้ของแพลตฟอร์มของโครงการ Unity ของคุณ

การอ้างอิงบทช่วยสอน Unity บน IL2CPP & Mono :

แบ็คเอนด์สคริปต์แต่ละรายการมีประโยชน์และข้อเสียที่ควรมีอิทธิพลต่อการตัดสินใจของคุณซึ่งเป็นตัวเลือกที่เหมาะสมสำหรับสถานการณ์ของคุณ

IL2CPP:

  • การสร้างรหัสได้รับการปรับปรุงอย่างมากเมื่อเทียบกับ Mono
  • การดีบักรหัสสคริปต์ใน C ++ จากบนลงล่างเป็นไปได้
  • คุณสามารถเปิดใช้การลอกรหัสเครื่องยนต์เพื่อลดขนาดรหัส
  • เวลาสร้างนานกว่าโมโน
  • รองรับการคอมไพล์ Ahead of Time (AOT) เท่านั้น

Mono:

  • สร้างเวลาได้เร็วกว่า IL2CPP
  • รองรับไลบรารีที่มีการจัดการมากขึ้นเนื่องจากการรวบรวม Just In Time (JIT)
  • รองรับการประมวลผลรหัสรันไทม์
  • ต้องจัดส่งชุดประกอบที่มีการจัดการ (ไฟล์. dll ที่ผลิตแบบโมโนหรือ. สุทธิ)

จุดสำคัญ:

  • สถาปัตยกรรมเป้าหมายเริ่มต้นในการตั้งค่า Android Player คือ armv7 และ x86 ด้วย IL2CPP และ Mono Scripting Backend
  • Mono ไม่รองรับ UWP หรือ iOS 11 ขึ้นไป สถาปัตยกรรมเริ่มต้นในการตั้งค่าผู้เล่น iOS คือ armv7 และ arm64 ด้วย IL2CPP Scripting Backend

  • UWP build เท่านั้นรองรับ IL2CPP และ. NET, แบ็กเอนด์การเขียนสคริปต์. NET (เลิกใช้แล้ว) ใช้. NET ของ Microsoft ในการเขียนสคริปต์พลังงาน


1
ฉันคิดว่าคำตอบของคุณไม่มีการอ้างอิง ฉันเห็นรายการ IL2CPP / Mono เป็นข้อความเดียวกับหน้ากวดวิชา IL2CPP & Mono ของ Unityและ 2 ย่อหน้าแรกมีข้อความเหมือนกับหน้าคู่มือ IL2CPP ของ Unityในลำดับที่แตกต่างกัน โปรดแก้ไขคำตอบของคุณเพื่อรวมการอ้างอิงดูศูนย์ช่วยเหลือสำหรับข้อมูลเพิ่มเติม
ซันนี่

3

IL2CPP เป็นแบ็คเอนด์สคริปต์ที่พัฒนาโดย Unity ซึ่งคุณสามารถใช้เป็นทางเลือกแทน Mono เมื่อสร้างโปรเจ็กต์สำหรับบางแพลตฟอร์ม เมื่อคุณเลือกที่จะสร้างโครงการโดยใช้ IL2CPP Unity จะแปลงรหัส IL (บางครั้งเรียกว่า CIL - ภาษาระดับกลางหรือภาษาระดับกลางทั่วไป) จากสคริปต์และแอสเซมบลีเป็นรหัส C ++ ก่อนที่จะสร้างไฟล์ไบนารีดั้งเดิม (.exe, apk, .xap) ตัวอย่าง) สำหรับแพลตฟอร์มที่คุณเลือก การใช้งานบางอย่างสำหรับ IL2CPP รวมถึงการเพิ่มประสิทธิภาพความปลอดภัยและความเข้ากันได้ของแพลตฟอร์มของโครงการ Unity ของคุณ

แหล่ง

IL2CPP เป็นแพลตฟอร์มการดำเนินการเทียบเท่าที่คาดคะเนได้เร็วกว่าโมโน ในบริบทนี้ "ทดลอง" ให้ความสำคัญกับคำว่า"สมมุติ"ในประโยคก่อนหน้า

คุณสมบัติการทดลองได้รับการปล่อยตัวด้วยเหตุผลเดียวกันกับซอฟต์แวร์เบต้าที่เผยแพร่สู่สาธารณะ: ซอฟต์แวร์นั้นดีพอที่จะใช้งานและนักพัฒนาต้องการรายงานข้อผิดพลาดและข้อเสนอแนะอื่น ๆ จากผู้ใช้ที่หลากหลายเพื่อให้พวกเขาไปถึงจุดที่ซอฟต์แวร์พร้อมหรือ การเปิดตัวจริง


* IL2CPP ไม่ทำงานสำหรับรหัสที่ใช้อย่างหมดจดผ่านการสะท้อนซึ่งจะเกิดขึ้นเมื่อใช้การสะท้อนการทำให้เป็นอนุกรมหรือข้อมูลทั่วไปในคลาสที่ไม่เคยถูกเรียกโดยตรงและดึงออกมาจากบิลด์ ข้อ จำกัดเดียวกันนี้ใช้กับโมโนบนแพลตฟอร์มที่ใช้ข้อ จำกัด การคอมไพล์ก่อนเวลา


ดังนั้นมันยังไม่เป็นผู้ใหญ่ แต่ฉันใช้ 5.2 ไม่มีประสบการณ์เกี่ยวกับ 5.5 หรือ 5.6 นอกจากนี้ข้อดีข้อเสียที่จะเปลี่ยนที่ il2cpp คืออะไร?
Muhammad Faizan Khan

เป็นผู้ใหญ่สำหรับบางแพลตฟอร์ม มันมีมาตั้งแต่ก่อน Unity 5 เป็นเวลาอย่างน้อย IOS ฉันคิดว่าแม้กระทั่ง IL2CPP ของ Android ก็ไม่ได้ถูกทดสอบว่าเป็นรุ่นล่าสุด ฉันพบว่าการกระโดดจาก Unity 4 ถึง 5 จะช้าลงบน Android จนกว่าฉันจะเริ่มใช้ IL2CPP จะเห็นได้เร็วขึ้นอย่างเห็นได้ชัดบนอุปกรณ์ทดสอบของฉัน
Tartle Wizard

1
ตั้งแต่ IL2CPP จะรวบรวมรหัสเครื่องไปข้างหน้าของเวลา แต่ก็มีข้อ จำกัด เพิ่มเติมไม่กี่เกี่ยวกับการสะท้อนและการใช้ยาชื่อสามัญ คอมไพเลอร์ Just-in-Time ของ Mono มีข้อมูลอยู่ในมือเพื่อวิปัสสนาและสร้างโค้ดที่ต้องการได้ทันที แต่สำหรับ AoT โค้ดที่จำเป็นทั้งหมดจะต้องตรวจจับได้ง่ายในเวลาสร้าง
DMGregory
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.