Unity có sử dụng phiên bản khác của C # không, hay tất cả đều giống nhau? Nó trông khác với C # thông thường nhưng có một số yếu tố C # thông thường trong đó.
Unity có sử dụng phiên bản khác của C # không, hay tất cả đều giống nhau? Nó trông khác với C # thông thường nhưng có một số yếu tố C # thông thường trong đó.
Câu trả lời:
Như đã nêu trong các câu trả lời khác, Unity 4.x sử dụng phiên bản sửa đổi của Mono dựa trên Mono 2.6
Đối với hầu hết các phần, điều này tương thích với .Net 2.0 , mặc dù tôi không thể theo dõi danh sách tương thích cụ thể của Mono 2.6.
Nó trông khác với C # thông thường nhưng có một số yếu tố C # thông thường trong đó.
Như đã đề cập trong một trong những nhận xét về câu hỏi của bạn, điều này có thể là do API tập lệnh cụ thể của Unity chứ không phải do ngôn ngữ.
Ví dụ, rất nhiều mã trong các dự án Unity điển hình được chứa trong các lớp con của một lớp được gọi là MonoBehavior. Đây là những thành phần được loại bỏ trên GameObject trong môi trường Unity Editor. Kiến trúc này dẫn đến mã C # trông khác với mã C # điển hình (dù sao với tôi) theo một số cách:
Nói một cách thực tế, tính năng ngôn ngữ C # lớn nhất mà tôi bỏ lỡ trong phiên bản C # hiện tại của Unity là hỗ trợ cho async và các từ khóa và chức năng liên quan. Một khái niệm tương tự trong Unity là coroutines . Chúng thực thi trên luồng chính vì vậy không đồng bộ thực sự, nhưng không cho phép mã chạy dài bị phá vỡ trên nhiều khung. Đa luồng cấp thấp hơn vẫn được hỗ trợ.
async
trong C # cũng không đúng async như trong đa luồng - nó cũng chạy trên luồng chính. Sự khác biệt lớn nhất, từ góc độ sử dụng, giữa coroutines và async là thời gian mã được chạy.
Unity 4 sử dụng Mono 2.6 , đây là một triển khai đầy đủ của .NET framework, bao gồm cả ngôn ngữ C #.
Tôi không chắc nó trông khác nhau như thế nào, nhưng hãy nhớ rằng Unity hỗ trợ một số ngôn ngữ, tất cả đều hoạt động trên cùng một thời gian chạy Mono. Có thể bạn đang nhầm lẫn C # với UnityScript ?
Unity sử dụng C # thường xuyên.
Sau đó, một lần nữa, khi bạn viết C # trong Unity, bạn sẽ sử dụng rất nhiều thư viện của họ, nhưng theo tôi biết, mọi thứ có thể có trong C # đều có thể có trong Unity, ngoài những khác biệt được liệt kê bên dưới:
Các khu vực cụ thể khác của .Net liên quan đến Windows Forms & ASP bị giới hạn thông qua Unity.
Mặc dù bạn có thể sử dụng Visual Studio để chỉnh sửa và biên dịch lỗi thời gian, bạn phải xây dựng và chạy trong Unity IDE.
Unity sử dụng Mono, một triển khai mã nguồn mở của .Net, có nghĩa là có một số khác biệt nhỏ.
Câu hỏi liệu Phiên bản C # được Unity sử dụng có khác với C # "thông thường" đã được trả lời bởi các bài đăng khác không. Kể từ khi bạn đang yêu cầu một cách rõ ràng cho một số yếu tố mà có thể khác nhau từ một phiên bản thường xuyên như vậy tôi sẽ chia sẻ chỉ khác biệt nhỏ, tôi nhận thấy khi so sánh việc sử dụng C # tôi tại nơi làm việc (ví dụ: C # 4.0 trong Visual Studio 2010 và cao hơn) và C # trong Unity, mà là tôi không thể sử dụng các giá trị mặc định cho các tham số trong định nghĩa hàm. đó là bạn phải thiết lập dự án của mình cẩn thận hơn để sử dụng phiên bản C # mới hơn. Xem liên kết này để giải thích thêm.
Chỉnh sửa: Tôi để lại câu trả lời này vì theo tôi biết đây là một sự hiểu lầm xảy ra với khá nhiều người.