Est-il possible d'utiliser C ++ avec Unity au lieu de C #?

23

Le titre en dit long. Est-il possible de remplacer C # par C ++ sur un jeu utilisant Unity?

DJMcMayhem
la source
C'est si vous avez l'édition Pro. Pour plus d'informations, voir: docs.unity3d.com/Manual/Plugins.html
Ascendion

Réponses:

23

Il est possible d'utiliser C ++ avec la version gratuite d'Unity, bien qu'il soit plus facile de travailler avec si vous avez une licence Unity Pro. Tout ce que vous avez à faire est de l'envelopper dans une DLL et de suivre les instructions ci-dessous pour savoir où le placer.

J'ai écrit un article qui couvre ce sujet: Unity et DLL: C # (géré) et C ++ (non géré)

Pour Unity 4 gratuit:

  • Ajoutez du code non managé à la racine du projet Unity: UnityProject
  • Ajoutez le code managé au dossier Plugins: UnityProject->Plugins
  • Lorsque vous générez un projet, copiez le code non managé dans BuildRoot-> Data->Plugins

Pour Unity 4 Pro et tout Unity 5:

  • Copiez simplement les DLL dans UnityProject->Plugins

Unmanaged signifie C ++ et Managed signifie C #

MLM
la source
1
Cela a-t-il changé pour Unity 5 où la version gratuite contient toutes les fonctionnalités du moteur de la version pro?
GeekyMonkey
1
@GeekyMonkey Mise à jour de l'article et de la réponse.
MLM
Cela n'a aucun sens d'essayer de remplacer C # par C ++ dans le contexte Unity3D. Cette réponse peut être utile si une interface avec le code natif a été demandée.
aggsol
1
Avec la nouvelle technologie IL2C ++, il n'y a pas beaucoup de raisons d'utiliser C ++ au lieu de C #. Pour l'instant, il est limité aux plates-formes mobiles, mais attendez-vous à ce que la technologie soit bientôt disponible sur PC.
JPtheK9
1
@ user2023370 J'ai mis à jour cette partie pour rendre le langage plus clair "Unity 4 et ci-dessous", merci pour le commentaire :)
MLM
1

C'est possible mais peu pratique. Il faudrait écrire du C ++ managé pour y parvenir. Et oui, il existe une chose telle que le C ++ managé. Géré ne signifie pas spécifiquement C # et C ++ non managé. Pour y parvenir, vous devrez importer le fichier DLL UnityEngine. Lorsque vous avez terminé, vous le placez dans le dossier (Unity Project Name) / Plugins. Voici le code que vous utiliseriez: Dans le fichier C ++:

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

};

Dans le fichier C #:

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

Ce code exact ne fonctionnerait pas mais c'est une base.

Void Chicken
la source
Le runtime mono utilisé dans Unity prend-il enfin en charge les assemblages en mode mixte? Nous n'avons pas eu de chance il y a quelques années sur 4 et les assemblages de VS 2012 donc ce serait vraiment génial!
Oliver