¿Es posible usar C ++ con Unity en lugar de C #?

Respuestas:

23

Es posible usar C ++ con la versión gratuita de Unity, aunque es más fácil trabajar con una licencia de Unity Pro. Todo lo que tiene que hacer es envolverlo en una DLL y seguir las instrucciones a continuación sobre dónde colocarlo.

Escribí un artículo que cubre este tema: Unity y DLL: C # (administrado) y C ++ (no administrado)

Para Unity 4 gratis:

  • Agregue código no administrado a la raíz del proyecto Unity: UnityProject
  • Agregue código administrado a la carpeta Complementos: UnityProject->Plugins
  • Cuando cree un proyecto, copie el código no administrado en BuildRoot-> Data->Plugins

Para Unity 4 Pro y cualquier Unity 5:

  • Simplemente copie las DLL en UnityProject->Plugins

No administrado significa C ++ y Administrado significa C #

MLM
fuente
1
¿Ha cambiado esto para Unity 5, donde la versión gratuita contiene todas las características del motor de la versión pro?
GeekyMonkey
1
@GeekyMonkey Actualizó el artículo y la respuesta.
MLM
No tiene sentido intentar reemplazar C # con C ++ en el contexto de Unity3D. Esta respuesta puede ser útil si se solicitó la interacción con el código nativo.
aggsol
1
Con la nueva tecnología IL2C ++, no hay muchas razones para usar C ++ en lugar de C #. En este momento, se limita a las plataformas móviles, pero esperamos que la tecnología pronto esté disponible para PC.
JPtheK9
1
@ user2023370 Actualicé esa parte para aclarar el lenguaje "Unidad 4 y menos", gracias por el comentario :)
MLM
1

Es posible aunque inconveniente. Tendría que escribir C ++ administrado para lograrlo. Y sí, existe C ++ administrado. Administrado no significa específicamente C # y C ++ no administrado. Para lograrlo, deberá importar el archivo DLL de UnityEngine. Cuando haya terminado, póngalo en la carpeta (Nombre del proyecto de Unity) / Plugins. Aquí estaría el código que usaría: En el archivo C ++:

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

};

En el archivo C #:

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

Ese código exacto no funcionaría, pero esa es una base.

Pollo vacío
fuente
¿El tiempo de ejecución mono utilizado en Unity finalmente admite ensamblajes de modo mixto? No hemos tenido suerte hace algunos años en 4 y ensambles de VS 2012, ¡así que esto sería realmente genial!
Oliver