Czy można używać C ++ z Unity zamiast C #?

23

Tytuł mówi wszystko. Czy można zastąpić C # C ++ w grze korzystającej z Unity?

DJMcMayhem
źródło
To jest, jeśli masz wersję Pro. Aby uzyskać więcej informacji, zobacz: docs.unity3d.com/Manual/Plugins.html
Ascendion

Odpowiedzi:

23

Możliwe jest używanie C ++ z darmową wersją Unity, chociaż łatwiej jest pracować, jeśli masz licencję Unity Pro. Wszystko, co musisz zrobić, to owinąć go w bibliotekę DLL i postępować zgodnie z instrukcjami poniżej, gdzie go umieścić.

Napisałem artykuł na ten temat: Unity i DLL: C # (zarządzany) i C ++ (niezarządzany)

Dla Unity 4 Free:

  • Dodaj niezarządzany kod do katalogu głównego Unity Project: UnityProject
  • Dodaj kod zarządzany do folderu Wtyczki: UnityProject->Plugins
  • Podczas budowania projektu skopiuj niezarządzany kod do BuildRoot-> Data->Plugins

Dla Unity 4 Pro i dowolnej Unity 5:

  • Po prostu skopiuj biblioteki DLL do UnityProject->Plugins

Niezarządzane oznacza C ++, a Zarządzane oznacza C #

MLM
źródło
1
Czy zmieniło się to w Unity 5, gdzie darmowa wersja zawiera wszystkie funkcje silnika wersji pro?
GeekyMonkey
1
@GeekyMonkey Zaktualizowano artykuł i odpowiedz.
MLM
Nie ma sensu próbować zamieniać C # na C ++ w kontekście Unity3D. Ta odpowiedź może być pomocna, jeśli poproszono o połączenie z kodem macierzystym.
aggsol
1
Dzięki nowej technologii IL2C ++ nie ma wielu powodów, aby używać C ++ zamiast C #. Obecnie jest ograniczony do platform mobilnych, ale spodziewamy się, że technologia będzie wkrótce dostępna na PC.
JPtheK9,
1
@ user2023370 Zaktualizowałem tę część, aby uczynić język jaśniejszym „Unity 4 i poniżej”, dzięki za komentarz :)
MLM
1

Jest to możliwe, choć niewygodne. Aby to osiągnąć, musisz napisać zarządzany C ++. I tak, istnieje coś takiego jak zarządzany C ++. Zarządzane nie oznacza konkretnie C # i niezarządzanego C ++. Aby to osiągnąć, musisz zaimportować plik DLL UnityEngine. Po zakończeniu umieść go w folderze (Unity Project Name) / Plugins. Oto kod, którego użyjesz: W pliku C ++:

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

};

W pliku C #:

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

Dokładny kod nie działałby, ale to podstawa.

Kurczak Pustki
źródło
Czy środowisko uruchomieniowe mono używane w Unity wreszcie obsługuje zestawy trybu mieszanego? Kilka lat temu nie mieliśmy szczęścia w 4 i zespołach z VS 2012, więc byłoby naprawdę świetnie!
Oliver