Ist es möglich, C ++ mit Unity anstelle von C # zu verwenden?

23

Der Titel sagt schon alles. Ist es möglich, C # in einem Spiel mit Unity durch C ++ zu ersetzen?

DJMcMayhem
quelle
Es ist, wenn Sie die Pro-Edition haben. Weitere Informationen finden Sie unter: docs.unity3d.com/Manual/Plugins.html
Ascendion

Antworten:

23

Es ist möglich, C ++ mit der kostenlosen Version von Unity zu verwenden, obwohl es einfacher ist, damit zu arbeiten, wenn Sie eine Unity Pro-Lizenz haben. Alles, was Sie tun müssen, ist, es in eine DLL zu packen und den Anweisungen unten zu folgen, um es zu platzieren.

Ich habe einen Artikel zu diesem Thema geschrieben: Unity und DLLs: C # (verwaltet) und C ++ (nicht verwaltet)

Für Unity 4 Free:

  • Fügen Sie dem Unity-Projektstamm nicht verwalteten Code hinzu: UnityProject
  • Fügen Sie verwalteten Code zum Plugins-Ordner hinzu: UnityProject->Plugins
  • Kopieren Sie beim Erstellen eines Projekts den nicht verwalteten Code nach BuildRoot-> Data->Plugins

Für Unity 4 Pro und Unity 5:

  • Kopieren Sie einfach die DLLs in UnityProject->Plugins

Nicht verwaltet bedeutet C ++ und verwaltet bedeutet C #

MLM
quelle
1
Hat sich dies für Unity 5 geändert, wo die kostenlose Version alle Engine-Funktionen der Pro-Version enthält?
GeekyMonkey
1
@GeekyMonkey Artikel und Antwort aktualisiert.
MLM
Es macht keinen Sinn, C # im Unity3D-Kontext durch C ++ zu ersetzen. Diese Antwort ist möglicherweise hilfreich, wenn Sie nach einer Schnittstelle mit systemeigenem Code gefragt wurden.
Aggsol
1
Mit der neuen IL2C ++ - Technologie gibt es nicht viele Gründe, C ++ anstelle von C # zu verwenden. Im Moment ist es auf mobile Plattformen beschränkt, aber es wird erwartet, dass die Technologie bald auf dem PC verfügbar sein wird.
JPtheK9
1
@ user2023370 Ich habe diesen Teil aktualisiert, um die Sprache klarer zu machen "Unity 4 und darunter", danke für den Kommentar :)
MLM
1

Es ist zwar unpraktisch möglich. Sie müssten verwaltetes C ++ schreiben, um dies zu erreichen. Und ja, es gibt so etwas wie verwaltetes C ++. Verwaltet bedeutet nicht speziell C # und nicht verwaltetes C ++. Um dies zu erreichen, müssen Sie die UnityEngine-DLL-Datei importieren. Wenn Sie fertig sind, legen Sie es im Ordner (Unity Project Name) / Plugins ab. Hier ist der Code, den Sie verwenden würden: In der C ++ - Datei:

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

};

In der C # -Datei:

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

Dieser genaue Code würde nicht funktionieren, aber das ist eine Basis.

Leeres Huhn
quelle
Unterstützt die in Unity verwendete Mono-Laufzeitumgebung nun auch Assemblys im gemischten Modus? Wir hatten vor einigen Jahren noch kein Glück mit 4 und Baugruppen von VS 2012, also wäre das wirklich großartig!
Oliver