È possibile utilizzare C ++ con Unity anziché C #?


Risposte:


23

È possibile utilizzare C ++ con la versione gratuita di Unity, sebbene sia più facile lavorare con una licenza Unity Pro. Tutto quello che devi fare è avvolgerlo in una DLL e seguire le istruzioni seguenti su dove posizionarlo.

Ho scritto un articolo che tratta questo argomento: Unity e DLL: C # (gestito) e C ++ (non gestito)

Per Unity 4 gratis:

  • Aggiungi codice non gestito alla radice del progetto Unity: UnityProject
  • Aggiungi il codice gestito alla cartella Plugin: UnityProject->Plugins
  • Quando si crea un progetto, copiare il codice non gestito in BuildRoot-> Data->Plugins

Per Unity 4 Pro e qualsiasi Unity 5:

  • Basta copiare le DLL in UnityProject->Plugins

Non gestito significa C ++ e Managed significa C #


1
Questo è cambiato per Unity 5 in cui la versione gratuita contiene tutte le funzionalità del motore della versione pro?
GeekyMonkey

1
@GeekyMonkey Aggiornato l'articolo e la risposta.
MLM

Non ha senso provare a sostituire C # con C ++ nel contesto Unity3D. Questa risposta può essere utile se è stata richiesta l'interfacciamento con il codice nativo.
aggsol,

1
Con la nuova tecnologia IL2C ++, non ci sono molti motivi per usare C ++ invece di C #. Al momento, è limitato alle piattaforme mobili, ma prevede che la tecnologia sarà presto disponibile su PC.
JPtheK9,

1
@ user2023370 Ho aggiornato quella parte per rendere più chiaro il linguaggio "Unity 4 e precedenti", grazie per il commento :)
MLM,

1

È possibile anche se scomodo. Dovresti scrivere C ++ gestito per raggiungerlo. E sì, esiste C ++ gestito. Managed non significa specificamente C # e C ++ non gestito. Per raggiungerlo dovrai importare il file DLL UnityEngine. Quando hai finito lo metti nella cartella (Unity Project Name) / Plugins. Ecco il codice che useresti: Nel file C ++:

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

};

Nel file C #:

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

Quel codice esatto non funzionerebbe, ma questa è una base.


Il runtime mono utilizzato in Unity supporta infine gli assembly in modalità mista? Non abbiamo avuto fortuna alcuni anni fa su 4 e assemblee da VS 2012, quindi sarebbe davvero grandioso!
Oliver,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.