Hay dos formas principales de monetizar con publicidad, un juego de Unity para plataformas móviles: Puedes usar los vídeos de Unity, el Unity Service Ads, o puedes usar la opción de Google: admob, lo que viene a ser el adsense de las plataformas móviles.
En un mismo juego puedes usar las dos, siempre con moderación. La publicidad de Unity funciona a toda pantalla y suelen ser vídeos de otros juegos, mientras que la de admob tiene diversos formatos y tambien una gran variedad de productos.
En este caso vamos a ver como usar admob en un juego móvil desarrollado con Unity para Android.
Empecemos por los prerequisitos:
- Unity actualizado. Nos sirve una versión a partir de la 5.16, pero… actualizalo a la última.
- Un juego para Android. Aunque supongo que eso ya lo tienes.
- Una cuenta de Admob. Mas adelante explico cómo darse de alta.
Si ya lo tenemos todo, abrimos nuestro proyecto de Unity. Si nos falta justamente el juego de Unity, quizás sea mejor empezar por el tutorial básico de desarrollo de juegos en Unity.
Configuramos Unity para usar Admob.
Descargamos el plugin de de admob para Unity desde su página de GitHub.
Como podeís ver es la típica página de GitHub, no hace falta que clonemos el código ;-). Si bajamos un poco encontraremos el apartado de descargas, desde donde podremos obtener la última versión del Plugin.
Nos bajamos GoogleMobileAds.unitypackge, pinchando en su nombre. Lo copiais en vuestro directorio de assets. Tenemos dos formas de importalo:
- Con el proyecto de Unity abierto,dando doble click al package.
- Desde el menú: Assets->Import Package->Custom Package.
En cualquiera de los dos casos acabaremos en este cuadro de diálogo:
Pulsamos importar y ya lo tenemos 😉 Este proceso de importación és, o puede ser, un poco mas lento a lo que estamos acostumbrados, ya que es posible que necesite resolver dependencias de Android. Si es así os avisara con un cuadro de dialogo parecido a este:
Ahora nos queda escoger que tipo de anuncio queremos mostrar.
Configurando AdMob, creando la aplicación y el anuncio.
Lo primero es crear una aplicación admob, para ello pulsamos el botón Add App del menú de los cuadraditos.
Respondemos sobre si tenemos o no el juego publicado, lo mas normal es que no lo tengamos todavía. Así es en mi caso, por lo que escojo: No.
Indicamos el nombre de la aplicación y el SO al que vamos a desplegar.
Ahora ya podemos empezar a crear el anuncio.
Escogemos el tipo de anuncio a publicar. El mas sencillo es el de tipo Banner, y después el Interstitial. El primero es el que conocemos todos, el segundo nos muestra una anuncio a pantalla completa. El tercer tipo, el rewarded, nos sirve para introducirlo dentro del flujo natural del juego, por si quiere cambiar publicidad por premios, como nuevos caracteres o poderes especiales para el protagonista.
En nuestro caso, tiramos a lo sencillo y empezamos configurando un anuncio de tipo Banner, que mostraré en la pantalla de Game Over.
Le damos un nombre al bloque de anuncios y pulsamos CREATE AD UNIT.
Ya lo tenemos, nos muestra los datos que vamos a necesitar para configurar nuestro anuncio en nuestro juego, nos podemos enviar un mail con las instrucciones. Ahora volvemos a Unity.
Actualización: 2019. En las ultimas versiones tenemos que informar del AdmobAppId desde el menu: Assets->Google Mobile Adds->Settings.
Tenemos que marcar la casilla Enabled de la sección Google Admob y informar de app-id de nuestra aplicación, que hemos recibido en el correo o podemos obtener en el panel de control de Admob.
En caso de no informarlo nuestra aplicación dará el error: The Google Mobile Ads SDK was initialized incorrectly. Que podremos encontrar en los logs del dipositivo, consultables con ADB.
Código para mostrar el anuncio.
Ya tenemos el plugin instalado, y la aplicación de admob, así como el anuncio. Ahora vamos a crear el código necesario.
Yo he decidido mostrarlo en la pantalla de Game Over, que dispone de un Canvas. En este Canvas vamos a ejecutar el código necesario para mostrar el anuncio. Para ello crearemos un script nuevo, que asociaremos al canvas, yo lo he llamado banner.
using System.Collections; using System.Collections.Generic; using UnityEngine; using GoogleMobileAds.Api; public class banner : MonoBehaviour { #if UNITY_ANDROID // Use this for initialization private BannerView bannerView; void Awake() { string appUnitId = "ca-app-pub-7XXXX0708XXXXXXX~4201XXXXXX"; MobileAds.Initialize(appUnitId); } void Start () { this.RequestBanner(); } private void RequestBanner() { string adUnitId = "ca-app-pub-76XXX708189XXXXX/258XXXXXX9"; bannerView = new BannerView(adUnitId, AdSize.Banner, AdPosition.Top); AdRequest request = new AdRequest.Builder().Build(); bannerView.LoadAd(request); } void OnDisable(){ bannerView.Destroy (); } #endif }
En la función Start llamamos a RequestBanner, aunque podría haber puesto el código en la misma Start.
En la función Awake he puesto la llamada a MobileAds.Initialize, y le he pasado el ID de la aplicación, este ID ya hemos visto que se obtiene desde la consola de admobs.
En RequestBanner hacemos uso de el ID del anuncio creado, que también obtenemos desde la consola de admob, y llamamos a las funciones responsables de mostrar el Banner.
En OnDisable, destruimos la vista del banner. Es necesario hacerlo, ya que no desaparece al desactivar el Canvas.
Anuncios de test.
Google sabe que los anunciantes no estarán muy contentos si usamos publicidad de verdad en nuestras máquinas de test, por que no se la están mostrando a usuarios sino al desarrollador que está probando la aplicación. Es por eso que es obligatorio indicar qué máquinas vamos a usar para test o desarrollo. Para hacerlo tendremos que indicar a admob el identificador del dispositivo en el que vamos a ejecutar el juego de Unity.
¿Los has hecho todo bien y tus anuncios de Admob no aparece, o no se ven, en el mobil?
Una posible causa es que no has indicado que tu dispositivo es de test. Si ejecutas tu juego cob el mobil conectado al PC y con la opción Build&Run de Unity, google quiere mostrar anuncios de test, así que indicalo, y magicamente veras los anuncios.
¿Cómo obtenemos el ID del dispositivo para admob?
Tendremos que mirarlo en el logcat. Para ello, con el teléfono conectado a nuestro ordenador, ejecutamos el juego. Abrimos una línea de comandos y ejecutamos adb devices, nos tendría que salir nuestro dispositivo. En caso positivo, ejecutamos el comando adb logcat. Veremos las trazas que va dejando nuestro dispositivo, ejecutamos el juego y hacemos que muestre un anuncio. En las trazas buscamos una linea parecida a:
AdRequest.Builder.addTestDevice(“FBD42XXXXE20C7989C5XXXX9525372BB”) to get test ads on this device.
Con este valor modificamos la llamada a Adrequest para incorporar este Id como dispositivo de test.
AdRequest request = new AdRequest.Builder().AddTestDevice("xxxxxxxxxxxxxxxxxx").Build();
Más opciones de admob.
Hemos visto tan solo como configurar un anuncio de tipo Banner, el que viene por defecto. Podemos modificar el tamaño del banner y la posición. Para ello tendríamos que modificar los parámetros usados al crear el BannerView.
Para realizar un control mas específico de las acciones realizadas por el usuario podemos implementar funciones en Unity que serán llamadas cuando el usuario interactúe con nuestro anuncio. Por ejemplo, podríamos darle un premio si ve un video, para eso tendríamos que implememtar la función HandleOnAdOpened.
Mas información en la página de admob.
Si nos encontramos con algún problema es posible que falte algunas de las dependencias, lo podemos solucionar seleccionando la opción: Assets->Play Service Resolver->Android Resolver->Resolve. Con esto se copiaran todas las dependencias necesarias en el directorio de Assets.
Aqui vemos una imagen de mi pantalla de GameOver, con el flamante Banner de admob. En breve empezare a cobrar cantidades ingentes de Euruuuuussss 😉
[…] plataformas que nos permiten mostrar anuncios y monetizar nuestros juegos de Unity, ya vimos una introducción a admob, la plataforma de publicidad ofrecida por Google. Me gusta usar Unity Ads, por que es una forma de […]
Hola, segui esto a pie de letra pero no me funciona, lo pruebo con unity remote 5 y no me aparece la publicidad…
Alien,
Primero perdon, el sistema de anti-spam de comentarios se me ha vuelto loco y no dejaba pasar nada 🙁
Con Unity Remote 5 no vas a ver los anuncios.
Otra cosa es que tu cuenta de Addsense sea muy nueva, es decir recién creada, y a veces puede tardar unas horas, o un dia, hasta que empieza a mostrar anuncios.
En todo caso estoy convencido de que ya lo has solucionado :-), si no es así me lo comentas.
aahhhhh, y cuando acabes el juego recuerda que lo puedes promocionar en la comunidad de Google+
https://plus.google.com/communities/105157968098848452387
Saludos! y mucha suerte!
no consigo que me funcione 🙁 nunca me muestra el banner