Red de conocimiento informático - Descarga de software - ¿Cuáles son los riesgos de utilizar complementos de Unity? Unity puede importar código escrito (y compilado) en otros lenguajes, llamados complementos nativos. Hoy compartiré con ustedes cómo crear un complemento nativo de Unity. Los complementos administrados y no administrados en Unity conectan código diferente, que no es el primero de su tipo en Unity. Si es usuario de Windows, es posible que haya oído hablar de DLL, abreviatura de biblioteca de vínculos dinámicos. Al igual que las aplicaciones independientes, son software compilado. La diferencia es que no se pueden ejecutar directamente porque están diseñados específicamente para otras aplicaciones. Unity admite dos tipos de complementos: administrados y no administrados. El primero es un lenguaje de código de bytes escrito en C# y compilado en CIL. Los complementos alojados son tan potentes como los scripts de C# y vienen con código fuente compilado. Los complementos no administrados (o nativos) son software escrito en otro lenguaje, generalmente C++. Tienen pocas limitaciones en cuanto a funcionalidad y, a menudo, son más rápidos que los scripts tradicionales porque están compilados en código de máquina. Paso 1: cree un nuevo proyecto C++. En este ejemplo, estoy usando Visual Studio 2015. Puede elegir cualquier IDE para compilar código C++. Primero cree una biblioteca C ++ no administrada, es decir, cree un nuevo proyecto. Abra Visual Studio, haga clic en Archivo Nuevo proyecto y seleccione Aplicación de consola Visual C++ Win32. Después de nombrar su proyecto (TestDLL en este caso), asegúrese de que el tipo de aplicación esté configurado en DLL y seleccione un proyecto vacío en Opciones adicionales. En este punto, la solución Visual C++ está lista y podemos comenzar a escribir código. Paso 2: escribir el código C++ de la biblioteca generalmente se divide en dos archivos. Definición de función (archivo de encabezado) e implementación de función (archivo de implementación). El archivo de implementación es un archivo .cpp, ubicado en el directorio ResourceFiles, y el archivo de encabezado tiene el mismo nombre. h se coloca en el directorio HeaderFiles. En este ejemplo, creamos un archivo de encabezado y un archivo de implementación. El archivo de implementación contendrá todas las funciones que se guardarán en la DLL. Puede crear un nuevo archivo haciendo clic derecho en la carpeta correspondiente y seleccionando Agregar > Nuevo elemento (Nueva opción). Parte de implementación: TestDLLSort.cpp comienza a codificar para ordenar la matriz. [AppleScript] ¿Ver el código copiado como texto sin formato? 010203040506070809101112 # incluir " testdllsort . h " # incluir & lt; algoritmo & gtextern "C" { void TestSort(int a[], int length) { std::sort(a, a+length }} 5 ~ 7 usado); Se agrega la función de clasificación de matrices std:sort en la biblioteca de algoritmos. Simplemente familiarícese con C++ 11. Solo se agrega el bloque "C" externo, que debe usarse para exportar la referencia de TestSort a la DLL. Archivo de encabezado: las definiciones en el archivo de implementación de TestDLLSort.h deben ser exactamente las mismas que las del archivo de encabezado. Debe contener el prototipo TestSort, que es la firma de la función. [AppleScript] ¿Ver el código copiado como texto sin formato? 123456 #Define TESTDLLSORT _ API _ _ declspec(dllexport)extern " C " { TESTDLLSORT _ API void test sort(int a[], int length);} El resto es el código necesario para crear la DLL. TESTDLLSORT_API puede ser cualquier nombre que etiquete todas las funciones exportadas. En software más complejo, TESTDDLLSORT_API debe vincularse a __declspec(dllimport) según sea necesario. Pero en este caso no es necesario. Paso 3: compilar El último paso es compilar nuestra DLL en Visual Studio. Asegúrese de que la plataforma de publicación esté configurada correctamente (32 bits o 64 bits).

¿Cuáles son los riesgos de utilizar complementos de Unity? Unity puede importar código escrito (y compilado) en otros lenguajes, llamados complementos nativos. Hoy compartiré con ustedes cómo crear un complemento nativo de Unity. Los complementos administrados y no administrados en Unity conectan código diferente, que no es el primero de su tipo en Unity. Si es usuario de Windows, es posible que haya oído hablar de DLL, abreviatura de biblioteca de vínculos dinámicos. Al igual que las aplicaciones independientes, son software compilado. La diferencia es que no se pueden ejecutar directamente porque están diseñados específicamente para otras aplicaciones. Unity admite dos tipos de complementos: administrados y no administrados. El primero es un lenguaje de código de bytes escrito en C# y compilado en CIL. Los complementos alojados son tan potentes como los scripts de C# y vienen con código fuente compilado. Los complementos no administrados (o nativos) son software escrito en otro lenguaje, generalmente C++. Tienen pocas limitaciones en cuanto a funcionalidad y, a menudo, son más rápidos que los scripts tradicionales porque están compilados en código de máquina. Paso 1: cree un nuevo proyecto C++. En este ejemplo, estoy usando Visual Studio 2015. Puede elegir cualquier IDE para compilar código C++. Primero cree una biblioteca C ++ no administrada, es decir, cree un nuevo proyecto. Abra Visual Studio, haga clic en Archivo Nuevo proyecto y seleccione Aplicación de consola Visual C++ Win32. Después de nombrar su proyecto (TestDLL en este caso), asegúrese de que el tipo de aplicación esté configurado en DLL y seleccione un proyecto vacío en Opciones adicionales. En este punto, la solución Visual C++ está lista y podemos comenzar a escribir código. Paso 2: escribir el código C++ de la biblioteca generalmente se divide en dos archivos. Definición de función (archivo de encabezado) e implementación de función (archivo de implementación). El archivo de implementación es un archivo .cpp, ubicado en el directorio ResourceFiles, y el archivo de encabezado tiene el mismo nombre. h se coloca en el directorio HeaderFiles. En este ejemplo, creamos un archivo de encabezado y un archivo de implementación. El archivo de implementación contendrá todas las funciones que se guardarán en la DLL. Puede crear un nuevo archivo haciendo clic derecho en la carpeta correspondiente y seleccionando Agregar > Nuevo elemento (Nueva opción). Parte de implementación: TestDLLSort.cpp comienza a codificar para ordenar la matriz. [AppleScript] ¿Ver el código copiado como texto sin formato? 010203040506070809101112 # incluir " testdllsort . h " # incluir & lt; algoritmo & gtextern "C" { void TestSort(int a[], int length) { std::sort(a, a+length }} 5 ~ 7 usado); Se agrega la función de clasificación de matrices std:sort en la biblioteca de algoritmos. Simplemente familiarícese con C++ 11. Solo se agrega el bloque "C" externo, que debe usarse para exportar la referencia de TestSort a la DLL. Archivo de encabezado: las definiciones en el archivo de implementación de TestDLLSort.h deben ser exactamente las mismas que las del archivo de encabezado. Debe contener el prototipo TestSort, que es la firma de la función. [AppleScript] ¿Ver el código copiado como texto sin formato? 123456 #Define TESTDLLSORT _ API _ _ declspec(dllexport)extern " C " { TESTDLLSORT _ API void test sort(int a[], int length);} El resto es el código necesario para crear la DLL. TESTDLLSORT_API puede ser cualquier nombre que etiquete todas las funciones exportadas. En software más complejo, TESTDDLLSORT_API debe vincularse a __declspec(dllimport) según sea necesario. Pero en este caso no es necesario. Paso 3: compilar El último paso es compilar nuestra DLL en Visual Studio. Asegúrese de que la plataforma de publicación esté configurada correctamente (32 bits o 64 bits).

Luego seleccione Construir > Construir solución. En la consola en la parte inferior de la pantalla, verá un registro de salida como este: [AppleScript] ¿Ver el código de copia en texto sin formato? 010203040506070809101121314 1> - Toda la reconstrucción comenzó: Proyecto: TestDLL, Configuración: Versión x64-1 >testdllsort.CPP 1>Creando biblioteca C:\Users\Alan Zucconi\Documents\Visual Studio 2015\Projects\TestDLL\x64\Release\TestDLL .lib y objetos C:\Users\Alan Zucconi\Documents\Visual Studio 2015\Projects\TestDLL\x64\Release\TestDLL.exp 1 > Generar código 1 > Todos los 30 Las funciones se compilaron porque no se encontró ningún IPDB/IOBJ disponible en la compilación anterior. 1>Código de generación completado 1>testdll.vcx proj->c:\Users\Alan Zucconi\Documents\Visual Studio 2015\Projects\TestDLL\x64\Release\TestDLL.dll = = = = = == Reconstruir todo: 1 tuvo éxito, 0 falló, 0 se omitió ======== Si ve una advertencia, como la advertencia C4273: DLLINGAGE inconsistente, puede indicar que el compilador no está seguro de si usar __declspec(dllimport) o _ _declspec(dllexport ). Si desea crear un complemento nativo para Unity, utilice este último. Paso 4: Importar a Unity Según el registro de compilación anterior, busque la DLL compilada en el archivo del proyecto. En este caso se ubica en la carpeta x64\Release. Sólo queremos este documento. El primer paso para usarlo en Unity es copiarlo a la carpeta Complementos. Los complementos nativos suelen depender del sistema operativo o de la plataforma. Puede consultar el panel de vista a la derecha para asegurarse de que cada DLL esté incluida para la plataforma correcta. Paso 5: Después de usar la importación en Unity, usar la DLL es relativamente simple. El primer paso es definir un punto de entrada utilizando DLLImport. Debe especificar un nombre de DLL y un nombre de función. Se proporciona un alias para que pueda llamarse como cualquier otra función. [AppleScript] ¿Ver el código copiado como texto sin formato? 0102030405060708091112131415161718181920Utilice el sistema mediante UnityEngine. Tiempo de ejecución .InteropServices clase pública TestDLL: MonoBehaviour { // Función importada [DllImport("TestDLL ", EntryPoint = "TestSort")] public static extern void TestSort(int [] a, int length public int[]a; () { TestSort(a, a . Longitud); }} La cadena de la entrada debe ser la misma que el nombre en la biblioteca C++. Pero puedes usar el siguiente método para llamar a la función; esto también se llamará así en C# en el futuro. Debes tener en cuenta que Unity no puede detectar archivos DLL no administrados en el editor; debes ejecutar el juego para verificar si la conexión es exitosa; Para archivos DLL administrados, se puede realizar una detección estática.