เป็นไปได้ไหมที่จะใช้ C ++ กับ Unity แทนที่จะเป็น C #


23

ชื่อประเภทบอกทุกอย่าง เป็นไปได้หรือไม่ที่จะแทนที่ C # ด้วย C ++ ในเกมที่ใช้ Unity


มันเป็นถ้าคุณมีรุ่น Pro ดูข้อมูลเพิ่มเติมได้ที่: docs.unity3d.com/Manual/Plugins.html
Ascendion

คำตอบ:


23

เป็นไปได้ที่จะใช้ C ++ กับ Unity รุ่นฟรีแม้ว่าคุณจะใช้งาน Unity Pro ได้ง่ายขึ้นก็ตาม สิ่งที่คุณต้องทำคือห่อมันใน DLL และทำตามคำแนะนำด้านล่างเกี่ยวกับสถานที่ที่จะวางมัน

ฉันเขียนบทความที่ครอบคลุมหัวข้อนี้: Unity และ DLLs: C # (มีการจัดการ) และ C ++ (ไม่มีการจัดการ)

สำหรับ Unity 4 ฟรี:

  • เพิ่มรหัสที่ไม่มีการจัดการลงใน Unity Project Root: UnityProject
  • เพิ่มรหัสที่มีการจัดการไปยังโฟลเดอร์ปลั๊กอิน: UnityProject->Plugins
  • เมื่อคุณสร้างโครงการให้คัดลอกรหัสที่ไม่มีการจัดการไปที่BuildRoot-> Data->Plugins

สำหรับ Unity 4 Pro และ Unity 5:

  • เพียงแค่คัดลอก DLLs ลงในUnityProject->Plugins

ไม่มีการจัดการหมายถึง C ++ และการจัดการหมายถึง C #


1
สิ่งนี้มีการเปลี่ยนแปลงสำหรับ Unity 5 หรือไม่ที่รุ่นฟรีมีคุณสมบัติของเอ็นจิ้นทั้งหมดของรุ่นโปรใช่ไหม
GeekyMonkey

1
@GeekyMonkey อัปเดตบทความและคำตอบ
MLM

ไม่มีเหตุผลที่จะลองแทนที่ C # ด้วย C ++ ในบริบท Unity3D คำตอบนี้อาจเป็นประโยชน์หากมีการขอการเชื่อมต่อกับรหัสเนทีฟ
aggsol

1
ด้วยเทคโนโลยี IL2C ++ ใหม่มีหลายเหตุผลที่ใช้ C ++ แทน C # ตอนนี้มัน จำกัด เฉพาะแพลตฟอร์มมือถือ แต่คาดว่าเทคโนโลยีจะพร้อมใช้งานบนพีซีในเร็ว ๆ นี้
JPtheK9

1
@ user2023370 ฉันได้อัปเดตส่วนนั้นเพื่อทำให้ภาษาชัดเจนขึ้น "Unity 4 และต่ำกว่า" ขอบคุณสำหรับความคิดเห็น :)
MLM

1

เป็นไปได้แม้ว่าจะไม่สะดวก คุณต้องเขียน C ++ ที่จัดการเพื่อให้บรรลุ และใช่มีสิ่งเช่นจัดการ C ++ การจัดการไม่ได้หมายถึง C # โดยเฉพาะและ C ++ ที่ไม่มีการจัดการ เพื่อให้บรรลุเป้าหมายคุณจะต้องนำเข้าไฟล์ UnityEngine DLL เมื่อเสร็จแล้วคุณจะใส่ไว้ในโฟลเดอร์ (Unity Project Name) / Plugins นี่คือรหัสที่คุณจะใช้: ในไฟล์ C ++:

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

};

ในไฟล์ C #:

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

รหัสที่แน่นอนนั้นใช้ไม่ได้ แต่นั่นเป็นฐาน


ขาวดำรันไทม์ที่ใช้ใน Unity รองรับการประกอบโหมดผสมในที่สุดหรือไม่? เราไม่ได้โชคดีเมื่อหลายปีก่อนในวันที่ 4 และชุดประกอบจาก VS 2012 ดังนั้นมันจะยอดเยี่ยมจริงๆ!
Oliver
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.