Comunidad orientada al desarrollo de videojuegos

Como crear un plugin para Unity3d

Para incluir un plugin en nuestro juego tenemos que copiarlo en la carpeta Assets/Plugins. Al exportar el proyecto a una plataforma los plugins se exportan con el proyecto.

Para que nuestro plugin sea visible desde el editor de Unity3d tendremos que crear un plugin amigable para el editor, pero solo con la interfaz pública y otro el propio plugin con toda la funcionalidad implementada para las plataformas soportadas (que en nuestro caso será Windows Store).

Vamos a crear primero el plugin para el editor:

1. Abrimos Visual Studio;

2. Creamos un proyecto nuevo de tipo Windows\Class Library, C#, .Net 3.5, con el nombre EditorPlugin y una solución nueva con el nombre Plugin.HelloWorld:

clip_image002[4]

3. Renombramos la clase Class1 a Plugin y cambiamos su namespace de EditorPlugin a Plugin.HelloWorld:

namespace Plugin.HelloWorld

{

 

    public class Plugin

    {

    }

 

}

4. Nuestro plugin tendrá 2 funcionalidades: recibirá el nombre del usuario y podrá decirle “Hello [User]”. Vamos a implementar estas funcionalidades:

namespace Plugin.HelloWorld

{

 

    public class Plugin

    {

 

        public void SetUserName(string newName)

        {

        }

 

        public void SayHello(ref string answer)

        {

            answer = “Plugin para Editor”;

        }

    }

 

}

El plugin para el editor de Unity3d ya está hecho. Esta implementación del plugin se usara desde editor de Unity3d, ejecutando el juego, por ejemplo, con el botón Play (en la ventana Game).

Vamos a crear el plugin para Windows Store:

1. Añadimos a nuestra solución un proyecto nuevo de tipo WindowsStore\Class Library, C#, .Net 4.5, con el nombre Windows8Plugin:

clip_image004[4]

2. Renombramos la clase Class1 a Plugin y cambiamos su namespace de EditorPlugin a Plugin.HelloWorld.

3. Ahora vamos a implementar la lógica de los métodos de nuestro plugin:

namespace Plugin.HelloWorld

{

 

    public class Plugin

    {

 

        private string userName;

 

        public void SetUserName(string newName)

        {

            this.userName = newName;

        }

 

        public void SayHello(ref string answer)

        {

            if (string.IsNullOrWhiteSpace(this.userName))

                this.userName = “Stranger”;

            answer = string.Format(“Hello {0}!”, this.userName);

        }

 

    }

 

}

Ya tenemos implementado nuestro plugin para el editor de Unity3d y para Windows Store Applications.

Vamos a incluirlo a nuestro juego:

1. Compilamos la solución;

2. Con Windows Explorer vamos a la carpeta [MyWorkDirectory]\Plugin.HelloWorld\EditorPlugin\bin\Debug y copiamos el fichero EditorPlugin.dll al directorio [MyGame]\Assets\Plugins;

3. Vamos a la carpeta [MyWorkDirectory]\Plugin.HelloWorld\Windows8Plugin\bin\Debug y renombramos el fichero Windows8Plugin.dll al EditorPlugin.dll;

4. En la carpeta [MyGame]\Assets\Plugins y creamos una subcarpeta con el nombre Metro;

5. Copiamos todos los ficheros con la extensión DLL de la carpeta [MyWorkDirectory]\Plugin.HelloWorld\Windows8Plugin\bin\Debug a la carpeta [MyGame]\Assets\Plugins\Metro (que en nuestro caso será un fichero solo);

Nuestro plugin esta implementado y listo para ser usado desde nuestro juego.

Vamos a usar el plugin en un juego de Unity3d:

1. Creamos un juego nuevo o abrimos uno existente con el editor de Unity3d;

2. Creamos una escena nueva con el nombre HelloPluginScene;

3. Añadimos un objeto de tipo GUI Text a la escena para mostrar el texto, recibido del plugin, al usuario;

4. Creamos un script con el nombre HelloWorldScript:

using UnityEngine;

using System.Collections;

 

public class HelloWorldScript : MonoBehaviour

{

      

       public GUIText Text;

      

       private Plugin.HelloWorld.Plugin helloWorldPlugin;

 

       void Start ()

       {

              this.helloWorldPlugin = new Plugin.HelloWorld.Plugin();

              this.helloWorldPlugin.SetUserName(“Vlad”);

       }

      

       void Update ()

       {

              string answer = string.Empty;

              this.helloWorldPlugin.SayHello(ref answer);

              this.Text.text = answer;

       }

      

}

5. Asignamos el script creado al objeto “Main Camera” (o a cualquier GameObject de la escena);

6. Asignamos al componente Hellow World Script de Main Camera el valor de la propiedad Text a GUI Text (creado anteriormente);

Ya tenemos nuestro juego hecho.

Ahora vamos a probarlo.

En el editor de Unity3d pulsamos el botón Play y en la ventana Game deberíamos ver lo siguiente:

clip_image006[4]

Como vemos en la imagen, se ejecutó la implementación del plugin para el Editor.

Vamos a exportar nuestro juego para WindowsStore y ejecutarlo en un dispositivo con Windows 8.

Si lo hemos hecho bien, deberíamos ver lo siguiente:

clip_image008[4]

Como podemos ver, el texto está generado por la implementación del plugin para Windows Store.

Si exportamos este plugin para cualquier otra plataforma usara la implementación para el editor (porque no hay implementaciones para otras plataformas). Si nos vale esta implementación, funcionara, si no, tendremos que crear una implementación para cada plataforma.

, , , , , ,

3 thoughts on “Como crear un plugin para Unity3d

Leave a Reply