Una forma de implementar funciones de Android es mediante plugins Java, estos pueden ser archivos .jar  o .aar (plugin Android)
Desde C# como tal no podemos mandar a llamar los métodos y funciones de Java, pero mediante un script podemos crear algo similar a una interfaz y ejecutarlos desde C#.

Para esto vamos a necesitar Android Studio no importa mucho la versión mientras tengan actualizado el SDK y las API necesarias yo recomiendo como minimo la versión 17 (Jelly Bean)

Obviamente requieres de Unity, de igual manera no importa la versión ya que el script funciona sobre cualquier versión del software, pero, si tienes problemas de compatibilidad te recomiendo actualizar a la versión más reciente.

Ahora comencemos.

1. Crear y configurar el proyecto en Android Studio

En Android Studio vamos a crear un proyecto especifico para el plugin, vamos a File -> New -> New Project, En la primera ventana seleccionamos la plataforma “Add No Activity” para que no se cree un activity en el proyecto.

En la segunda ventana nombramos el proyecto, yo lo llamare ‘AndroidPlugin’ y como API mínima voy a usar la API 17 que es Jelly Bean y finalizamos con la creación del proyecto.

Con el proyecto ya creado, vamos a crear la biblioteca de Android, vamos a File -> New -> New Module, en la ventana que se despliega seleccionamos Android Library, pulsamos ‘next’.

Ahora configuramos el nombre, yo la nombrare ‘AndroidLib’ y luego seleccionamos la versión de SDK, de igual forma la pondremos en la API 17 (Jelly Bean),el ‘Module Name’ lo podemos dejar como nos lo pone automáticamente. y finalmente pulsamos ‘Finish’.

Selecciona Android Library
Selecciona el API mínimo

Ya hemos creado nuestro proyecto y configurado algunas cosas, ahora necesitamos codificar dentro de nuestra librería.

2. Codificar funciones para Android

Empecemos a codificar algo, dentro de la ventana de project, vamos a la carpeta de la biblioteca que en mi caso es ‘AndroidLib’, luego vamos a la carpeta ‘java’ ahí tenemos hasta 3 paquetes, 2 tienen entre paretesis (androidTest) y (test), seleccionamos el que no tenga ninguno de esos nombres que en mi caso es ‘com.scrapywar.unitylib’, damos clic derecho New -> Java Class.

Ubica el paquete principal, el que no tiene texto entre paréntesis.
Da clic derecho -> New -> Java Class

En mi caso llamare la mi clase ‘androidToast’, dejaremos la visibilidad en public y los modificadores en None , luego pulsamos ‘ok’.

Ahora dentro de la clase vamos a codificar el ejemplo para mostrar un mensaje con Toast  que es el siguiente.

 

Una vez completado nuestro código vamos a compilar el plugin para poder utilizarlo en Unity, antes de eso no olvidemos modificar el AndroidManifest.xml que se encuentra en carpetaplugin/manifest (Aunque eso debe ser antes de codificar).

Pero esto lo haremos si requerimos de permisos para utilizar algunas funciones, cosa que para este tutorial no haremos.

Ya solo queda compilar nuestro plugin,por defecto se compila la versión ‘debug’ pero debemos de generar la versión ‘release’, para ello debemos ir a la ventana “Build Variants” en donde cambiaremos la variable de nuestro modulo de debug  a release .

Para finalizar ya solo ve a Build -> Make Project y espera a que el proceso termine, al finalizar dirígete a la carpeta de tu modulo, y en build/outputs/aar encontraras el archivo .aar  que es tu plugin.

Compila el plugin
Plugin dentro de la carpeta de salida

3. Implementar el plugin en Unity

Prácticamente el paso final si lo queremos ver así, ahora vamos a implementar el plugin en Unity, primero creamos la carpeta Plugins y dentro de esta creamos otra llamada Android en la cual copiaremos el archivo .aar  previamente generado.

Importe el plugin a la carpeta Plugins -> Android de su proyecto

Debemos asegurarnos que este configurado únicamente para Android, como lo muestra la imagen.

Ahora vamos a crear un script para llamar a los métodos de Java, en mi caso voy a crear un nuevo script llamado ToastCaller y le voy a agregar el método ShowToast el cual va a recibir como parámetro un valor de tipo string .

Como paso final ya solo queda mandar a llamar el método en Unity, para ello agregaremos un botón a nuestra escena y al mismo le agregamos el script, para después configurar el evento On Click() , recuerda añadirle el mensaje que quieres mostrar.

Cree un botón en su escena
Agrega el método al evento On Click() del botón.
Añade el texto que quieras que se muestre en el Toast.

No olvides que para compilar debes de modificar los parámetros dentro del Player Settings como el package name y el Minimum API Level que debe ser el mismo que el de tu plugin.

Configura la API mínima igual a la de tu plugin para evitar problemas.

4. Probar

Puedes implementar tu aplicación en tu emulador preferido o directamente en tu dispositivo Android, al final de todo el resultado que obtendremos es el siguiente.

Resultado probado en un dispositivo Android 9.

Descargas

Puedes descargar el proyecto para Android Studio y/o el UnityPackage que puedes importar directamente en tu software Unity.

Proyecto Android Studio

Descarga el proyecto AndroidPlugin.zip que puedes abrir con Android Studio 3.3.2.

Descarga el Proyecto de Android Studio desde MEGA

Unity Package/Proyecto

Descarga el paquete de Unity, importalo a un nuevo proyecto o uno ya existente.

Descarga el Unity Package desde MEGA

Comparte este tutorial en tus redes sociales, hay funciones que Unity aun no ha incorporado y para ello debes utilizar plugins, hay muchas posibilidades así evitas comprar plugins tan sencillos como este.

Documentación relacionada.