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

23

Judulnya mengatakan semuanya. Apakah mungkin untuk mengganti C # dengan C ++ pada game menggunakan Unity?

DJMcMayhem
sumber
Itu jika Anda memiliki edisi Pro. Untuk informasi lebih lanjut, lihat: docs.unity3d.com/Manual/Plugins.html
Ascendion

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 #

MLM
sumber
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.

Ayam batal
sumber
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