Apakah mungkin menggunakan C ++ dengan Unity alih-alih C #?


Jawaban:


23

Dimungkinkan untuk menggunakan C ++ dengan Unity versi gratis, meskipun lebih mudah untuk digunakan jika Anda memiliki lisensi Unity Pro. Yang harus Anda lakukan adalah membungkusnya dalam DLL dan ikuti instruksi di bawah ini di mana harus meletakkannya.

Saya menulis artikel yang membahas topik ini: Persatuan dan DLL: C # (dikelola) dan C ++ (tidak dikelola)

Untuk Unity 4 Gratis:

  • Tambahkan kode yang tidak dikelola ke Root Proyek Persatuan: UnityProject
  • Tambahkan kode terkelola ke folder Plugins: UnityProject->Plugins
  • Saat Anda membangun proyek, salin kode yang tidak dikelola ke BuildRoot-> Data->Plugins

Untuk Unity 4 Pro dan Unity 5:

  • Cukup salin DLL ke UnityProject->Plugins

Tidak terkelola berarti C ++ dan Dikelola berarti C #


1
Apakah ini berubah untuk Unity 5 di mana versi gratisnya berisi semua fitur mesin dari versi pro?
GeekyMonkey

1
@ GeekyMonkey Memperbarui artikel dan jawabannya.
MLM

Tidak masuk akal untuk mencoba mengganti C # dengan C ++ dalam konteks Unity3D. Jawaban ini mungkin membantu jika diminta untuk berinteraksi dengan kode asli.
aggsol

1
Dengan teknologi IL2C ++ baru, tidak ada banyak alasan untuk menggunakan C ++ alih-alih C #. Saat ini, ini terbatas pada platform seluler tetapi mengharapkan teknologi tersebut akan segera tersedia di PC.
JPtheK9

1
@ user2023370 Saya memperbarui bagian itu untuk membuat bahasa lebih jelas "Unity 4 and below", terima kasih atas komentarnya :)
MLM

1

Itu mungkin meskipun tidak nyaman. Anda harus menulis C ++ yang dikelola untuk mencapainya. Dan ya, ada yang namanya dikelola C ++. Dikelola tidak secara khusus berarti C # dan C ++ yang tidak dikelola. Untuk mencapainya, Anda harus mengimpor file DLL UnityEngine. Setelah selesai, Anda taruh di folder (Nama Proyek Kesatuan) / Plugin. Berikut adalah kode yang akan Anda gunakan: Dalam file C ++:

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

};

Dalam file C #:

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

Kode persis itu tidak akan berfungsi tetapi itu adalah basis.


Apakah runtime mono yang digunakan dalam Unity akhirnya mendukung rakitan mode campuran? Kami belum memiliki keberuntungan beberapa tahun yang lalu di 4 dan majelis dari VS 2012 sehingga ini akan sangat luar biasa!
Oliver
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.