Có thể sử dụng C ++ với Unity thay vì C # không?


Câu trả lời:


23

Có thể sử dụng C ++ với phiên bản Unity miễn phí, mặc dù nó dễ làm việc hơn nếu bạn có giấy phép Unity Pro. Tất cả bạn phải làm là gói nó trong một DLL và làm theo các hướng dẫn bên dưới về nơi đặt nó.

Tôi đã viết một bài viết đề cập đến chủ đề này: Unity và DLL: C # (được quản lý) và C ++ (không được quản lý)

Dành cho Unity 4 miễn phí:

  • Thêm mã không được quản lý vào Unity Project Root: UnityProject
  • Thêm mã được quản lý vào thư mục Plugins: UnityProject->Plugins
  • Khi bạn xây dựng một dự án, sao chép mã không được quản lý vào BuildRoot-> Data->Plugins

Dành cho Unity 4 Pro và mọi Unity 5:

  • Chỉ cần sao chép các DLL vào UnityProject->Plugins

Không được quản lý có nghĩa là C ++ và Managed có nghĩa là C #


1
Điều này đã thay đổi cho Unity 5 trong đó phiên bản miễn phí có chứa tất cả các tính năng động cơ của phiên bản pro?
GeekyMonkey 04/03/2015

1
@GeekyMonkey Cập nhật bài viết và câu trả lời.
MLM

Thật vô nghĩa khi cố gắng thay thế C # bằng C ++ trong ngữ cảnh Unity3D. Câu trả lời này có thể hữu ích nếu yêu cầu giao tiếp với mã gốc.
aggieol

1
Với công nghệ IL2C ++ mới, không có nhiều lý do để sử dụng C ++ thay vì C #. Ngay bây giờ, nó giới hạn trong các nền tảng di động nhưng hy vọng công nghệ này sẽ sớm có mặt trên PC.
JPtheK9

1
@ user2023370 Tôi đã cập nhật phần đó để làm cho ngôn ngữ rõ ràng hơn "Unity 4 trở xuống", cảm ơn vì nhận xét :)
MLM

1

Nó có thể mặc dù bất tiện. Bạn sẽ phải viết C ++ được quản lý để đạt được nó. Và vâng, có những thứ như C ++ được quản lý. Được quản lý không có nghĩa cụ thể là C # và C ++ không được quản lý. Để đạt được nó, bạn sẽ cần nhập tệp UnityEngine DLL. Khi bạn hoàn thành, bạn đặt nó vào thư mục (Tên dự án Unity) / Plugins. Đây sẽ là mã bạn sử dụng: Trong tệp C ++:

public ref class CPPUNITY {
  public:
     void Start() {
         Debug::Log("C++ printed message");
     }

};

Trong tệp C #:

     using UnityEngine;
     public class FileName {
         void Start() {
              CPPUNITY.Start();
         }
     }

Mã chính xác đó sẽ không hoạt động nhưng đó là một cơ sở.


Liệu thời gian chạy đơn được sử dụng trong Unity cuối cùng có hỗ trợ các chế độ hỗn hợp không? Chúng tôi đã không gặp may mắn vài năm trước trên 4 và các hội đồng từ VS 2012 vì vậy điều này sẽ thực sự tuyệt vời!
Oliver
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.