Version: 2019.2
Inspector de Plugins
Native plug-ins

Managed plug-ins

Usualmente, los scripts se mantienen en un proyecto como los archivos fuente y son compilados por Unity cuando la fuente cambia. Sin embargo, también es posible compilar un script a una dynamically linked library** (DLL) utilizando un compilador externo. El DLL resultante puede luego ser agregado al proyecto y las clases que contiene pueden ser adjuntadas a los objetos como los scripts normales.

It is generally much easier to work with scripts than DLLs in Unity. However, you may have access to third party Mono code which is supplied in the form of a DLL. When developing your own code, you may be able to use compilers not supported by Unity by compiling the code to a DLL and adding it to your Unity project. You may also want to supply Unity code without the source (for example, for an Asset Store product) and a DLL is an easy way to do this.

Creando un DLL

Para crear un DLL, usted primero necesitaría un compilador adecuado. No todos los compiladores que producen código .NET son garantizados a que funcionen con Unity, por lo que puede ser sabio probar el compilador con algo de código disponible antes de hacer trabajo significante con este. si el DLL contiene ningún código que depende en el API de Unity, entonces usted podría simplemente compilarlo a un DLL utilizando las opciones apropiadas de compilación. Si usted no quiere utilizar el API de Unity entonces usted necesitará que los DLLs propios de Unity estén disponibles al compilador. En Mac, estos están contenido en el bundle de aplicación (usted puede ver la estructura interna del bundle al utilizar el comando Show Package Contents del menú contextual; haga click derecho o ctrl- click en la aplicación de Unity):-

La ruta a los DLLs de Unity típicamente serán

/Applications/Unity/Unity.app/Contents/Managed/

… y los dos DLLs son llamados UnityEngine.dll y UnityEditor.dll.

En Windows, los DLLs pueden encontrarse en las carpetas que acompaña la aplicación de Unity. La ruta típicamente será

C:\Program Files\Unity\Editor\Data\Managed

… mientras los nombres de los DLLs son los mismos para Mac OS.

Las opciones exactas para compilar el DLL van a variar dependiendo en el compilador utilizado. Como ejemplo, la linea de comando para el compilador Mono C#, mcs, podría verse algo así en Mac OS:-

mcs -r:/Applications/Unity/Unity.app/Contents/Managed/UnityEngine.dll -target:library ClassesForDLL.cs 

Aquí, la opción -r especifica una ruta a la librería en ser incluida en la construcción, en este caso, la librería UnityEngine. La opción -target especifica qué tipo de construcción es requerida; la palabra “library” (librería) es utilizada para seleccionar una construcción DLL. Finalmente el nombre del archivo fuente en compilar es ClassesForDLL.cs (se asume que este archivo está en la carpeta actual de trabajo, pero usted podría especificar el archivo utilizando una ruta completa si es necesario). Asumiendo que todo va bien, el archivo DLL resultante va a aparecer cortamente en la misma carpeta que el archivo fuente.

Usando la DLL

Una vez compilado, el archivo DLL puede ser simplemente arrastrado al proyecto de Unity como cualquier otro asset. El asset DLL tiene un triangulo que se dobla que puede ser utilizado para revelar las clases separadas dentro de la librería. Las clases que deriven de MonoBehaviour pueden ser arrastradas a los Game Objects como cualquier script ordinario. Las clases No-MonoBehaviour pueden ser utilizadas directamente desde otro scripts de una manera usual.

Un DLL doblado con las clases visibles
Un DLL doblado con las clases visibles

Step by step guide for Visual Studio

This section explains how to build and integrate a simple DLL example with Visual Studio, and also how to prepare a debugging session for the DLL.

Configurando el proyecto

First, open Visual Studio and create a new project. In Visual Studio, you should select File > New > Project and then choose Visual C# > Class Library.

Usted luego necesita llenar la información para la nueva librería:

  • Name es el namespace (para este ejemplo utilice “DLLTest” como el nombre).
  • Location es la carpeta padre del proyecto.
  • Solution name es la carpeta del proyecto.

Next, you should add references to the Unity DLLs. In Visual Studio, open the contextual menu for References in the Solution Explorer and choose Add Reference. Then, choose the option Browse > Browse > select file.

At this stage, you will have the option to select the required DLL file. On Mac OS X, the file path is:

Applications/Unity.app/Contents/Managed/UnityEngine.dll

On Windows, the path is:

Program Files\Unity\Editor\Data\Managed\UnityEngine.dll

Código

For this example, rename the class to MyUtilities in the Solution browser and replace its code with the following:

using System;   
using UnityEngine;

namespace DLLTest {

    public class MyUtilities {
    
        public int c;

        public void AddValues(int a, int b) {
            c = a + b;  
        }
    
        public static int GenerateRandom(int min, int max) {
            System.Random rand = new System.Random();
            return rand.Next(min, max);
        }
    }
}

Con este código en su lugar, construya el proyecto para generar el archivo DLL con sus símbolos de depuración.

Usando la DLL en Unity

For this example, create a new project in Unity and copy the built file <project folder>/bin/Debug/DLLTest.dll into the Assets folder. Then, create a C# script called “Test” in Assets, and replace its contents with the following code:

using UnityEngine;
using System.Collections;
using DLLTest;

public class Test : MonoBehaviour {

     void Start () {
        MyUtilities utils = new MyUtilities();
        utils.AddValues(2, 3);
        print("2 + 3 = " + utils.c);
     }
    
     void Update () {
        print(MyUtilities.GenerateRandom(0, 100));
     }
}

Cuando usted adjunte este script a un objeto en la escena y presione Play, usted verá el output del código del DLL en la ventana de la Consola.

Setting up a debugging session for the DLL

Firstly, you should prepare the debug symbols for the DLL. In Visual Studio, execute in the command prompt, passing <project folder>\bin\Debug\DLLTest.pdb as a parameter:

Program Files\Unity\Editor\Data\Mono\lib\mono\2.0\pdb2mdb.exe

Then, copy the converted file <project folder>\bin\Debug\DLLTest.dll.mdb into Assets/Plugins.

Con esta configuración completada, usted puede depurar el código que utiliza DLL en Unity en la manera usual. Ver la sección Scripting Tools para más información acerca de la depuración.

Compiling ‘unsafe’ C# code

You can enable support for compiling ‘unsafe’ C# code in Unity. To do this, go to Edit > Project Settings, then select the Player category. Expand the Other Settings panel to reveal the Allow ‘unsafe’ Code checkbox.


  • 2018–03–20 Page amended

  • MonoDevelop replaced by Visual Studio from 2018.1

  • ‘unsafe C# Code checkbox’ added in 2018.1

Inspector de Plugins
Native plug-ins