Sự khác biệt giữa tập lệnh phụ trợ kịch bản IL2CPP và Mono2x


14

IL2CPP là một back-end scripting do Unity phát triển mà bạn có thể sử dụng thay thế cho Mono khi xây dựng dự án cho một số nền tảng. Lưu ý - IL2CPP chỉ khả dụng khi xây dựng các nền tảng sau:

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

Tôi có một dự án (unity 5.2) đã chuyển sang triển khai Android. Tôi cố gắng để chuyển đổi kịch bản của tôi hậu thuẫn từ Mono2xđến IL2CPPvà nó cho thấy tôi rằng

IL2CPP trên Andriod là thử nghiệm và không được hỗ trợ

Vì vậy, câu hỏi đơn giản của tôi là nếu nó vẫn không được hỗ trợ thì tại sao lại có tùy chọn này, sự khác biệt cơ bản giữa IL2CPP và Mono2x là gì. Tại sao tôi chuyển sang phụ trợ kịch bản IL2CPP ? của nó là gì ưu và nhược điểm ?

Tôi cũng đã kiểm tra trong unity 5.5.2 không có tùy chọn IL2CPP trong triển khai nền tảng windows.

Câu trả lời:


13

Thông tin dựa trên phiên bản Unity 2018.2:

Trích dẫn hướng dẫn sử dụng Unity trên IL2CPP :

IL2CPP ( Ngôn ngữ trung gian thành C ++ ) là phần phụ trợ kịch bản do Unity phát triển mà bạn có thể sử dụng thay thế cho Mono khi xây dựng dự án cho các nền tảng khác nhau. IL2CPP ( Trình biên dịch trước thời hạn (AOT)) hỗ trợ gỡ lỗi mã được quản lý theo cách tương tự như phụ trợ kịch bản lệnh Mono.

Khi xây dựng dự án bằng IL2CPP, Unity chuyển đổi mã IL từ tập lệnh và tập hợp thành C ++, trước khi tạo tệp nhị phân gốc (ví dụ: .exe, apk, .xap) cho nền tảng bạn đã chọn. Một số cách sử dụng cho IL2CPP bao gồm tăng hiệu suất, bảo mật và khả năng tương thích nền tảng của các dự án Unity của bạn.

Trích dẫn hướng dẫn Unity trên IL2CPP & Mono :

Mỗi Phần cuối kịch bản có những lợi ích và nhược điểm sẽ ảnh hưởng đến quyết định của bạn, đâu là lựa chọn phù hợp cho tình huống của bạn:

IL2CPP:

  • Việc tạo mã được cải thiện rất nhiều so với Mono.
  • Gỡ lỗi mã Script trong C ++ từ trên xuống dưới là có thể.
  • Bạn có thể kích hoạt tước mã động cơ để giảm kích thước mã.
  • Thời gian xây dựng dài hơn so với Mono.
  • Chỉ hỗ trợ biên dịch Ahead of Time (AOT).

Đơn điệu:

  • Thời gian xây dựng nhanh hơn IL2CPP.
  • Hỗ trợ các thư viện được quản lý nhiều hơn do biên dịch Just In Time (JIT).
  • Hỗ trợ thực thi mã thời gian chạy.
  • Phải gửi các tập hợp được quản lý (các tập tin dll mà mono- hoặc .net sản xuất).

Điểm quan trọng:

  • Kiến trúc mục tiêu mặc định trong Cài đặt trình phát Android là armv7 và x86 với IL2CPP và Mono Scripting Backend.
  • Mono không được hỗ trợ trên UWP hoặc iOS 11 trở lên. Kiến trúc mặc định trong Cài đặt trình phát iOS là armv7 và arm64 với Phần cuối tập lệnh IL2CPP.

  • Bản dựng UWP chỉ hỗ trợ IL2CPP và .NET, Phần phụ trợ kịch bản .NET (Không dùng nữa) sử dụng .NET của Microsoft để cấp nguồn cho kịch bản.


1
Tôi nghĩ rằng câu trả lời của bạn là thiếu tài liệu tham khảo. Tôi thấy danh sách IL2CPP / Mono có cùng văn bản với trang hướng dẫn IL2CPP & Mono của Unity và 2 đoạn đầu tiên có cùng văn bản với trang hướng dẫn IL2CPP của Unity theo thứ tự khác. Vui lòng chỉnh sửa câu trả lời của bạn để bao gồm các tài liệu tham khảo, xem trung tâm trợ giúp để biết thêm thông tin.
trai

3

IL2CPP là một back-end scripting do Unity phát triển mà bạn có thể sử dụng thay thế cho Mono khi xây dựng các dự án cho một số nền tảng. Khi bạn chọn xây dựng dự án bằng IL2CPP, Unity chuyển đổi mã IL (đôi khi được gọi là CIL - Ngôn ngữ trung gian hoặc Ngôn ngữ trung gian chung) từ tập lệnh và tập hợp thành mã C ++, trước khi tạo tệp nhị phân gốc (.exe, apk, .xap, cho ví dụ) cho nền tảng bạn đã chọn. Một số cách sử dụng cho IL2CPP bao gồm tăng hiệu suất, bảo mật và khả năng tương thích nền tảng của các dự án Unity của bạn.

Nguồn

IL2CPP là một nền tảng thực thi được cho là tương đương * nhanh hơn so với đơn. Trong bối cảnh này, "thử nghiệm" đặt trọng tâm mạnh mẽ vào từ "được cho là" trong câu trước.

Các tính năng thử nghiệm được phát hành với cùng lý do phần mềm beta được phát hành công khai: Phần mềm này đủ tốt để sử dụng và nhà phát triển muốn báo cáo lỗi và phản hồi khác từ nhiều người dùng để họ có thể đến điểm mà phần mềm đã sẵn sàng hoặc Bản phát hành thực tế.


* IL2CPP không hoạt động đối với mã được sử dụng hoàn toàn thông qua phản xạ, điều này sẽ xảy ra khi sử dụng phản xạ, tuần tự hóa hoặc tổng quát trên các lớp không bao giờ được gọi trực tiếp và do đó bị tước khỏi bản dựng. Hạn chế tương tự hiện đang áp dụng cho Mono trên các nền tảng sử dụng các hạn chế biên dịch Ahead of Time.


Vì vậy, nó vẫn chưa trưởng thành nhưng tôi đang sử dụng 5.2 không có kinh nghiệm về 5.5. hoặc 5.6. Ngoài ra, những ưu điểm để thay đổi tại il2cpp là gì?
Muhammad Faizan Khan

Nó là trưởng thành cho một số nền tảng. Nó đã xuất hiện từ trước Unity 5 cho ít nhất là iOS. Tôi nghĩ ngay cả Android IL2CPP cũng không được đánh dấu thử nghiệm trong các phiên bản mới nhất. Tôi thấy bước nhảy từ Unity 4 lên 5 sẽ chậm hơn trên Android cho đến khi tôi bắt đầu sử dụng IL2CPP. Nó nhanh hơn đáng kể trên các thiết bị thử nghiệm của tôi.
Thuật sĩ Tartle

1
Vì IL2CPP đang biên dịch thành mã máy trước thời gian, nên nó có một vài hạn chế bổ sung liên quan đến việc phản ánh và sử dụng thuốc generic . Trình biên dịch Just-in-Time của Mono có sẵn thông tin để hướng nội & tạo mã cần thiết khi đang di chuyển, nhưng đối với AoT, tất cả các mã cần thiết phải dễ dàng phát hiện khi xây dựng.
DMGregory
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.