Single Tech Games

unity 2d flappy bird admob

Tutorial de como utilizar el Plugin de Admob para Unity en Android (Interstitial y Banner) – Flappy Bird 7

Hola Gente! Hoy les traigo un tutorial muy pedido también, como utilizar el nuevo plugin de Admob en Unity 2D, bueno la semana pasada vimos como funcionaba Google Play Game Services y hoy toca sacarle un poco el jugo a eso.

Recuerden que es necesario tener instalado el Game Services en el SDK de Android como lo vimos en el video anterior de como usar Google Play Game Services.
Solo veré 2 casos, que son los más usados, la publicidad en forma de Banner y la que viene en forma de Interstitial, solo para comentarles que si ya están utilizando Admob, recuerden que tienen que actualizar a la ultima versión del SDK de Admob antes de el 31 de agosto de este año, ya que el antiguo Admob dejará de funcionar, pero por otro lado, dejarán de recibir dinero por paypal, ya que deja de ser soportado.
Bueno solo me queda decirles que este es el ultimo tutorial de Flappy Bird en Unity 2D, el siguiente video será sobre inkscape, que lo tengo muy desamparado 😛 aunque de repente me animo a poner uno de Mopub, que es el que estoy trabajando ahora, también lleva banner e interstitial, pero no es muy conocido y tampoco es tan fácil de hacer.
Código
admobScript

using UnityEngine;
using System.Collections;
using GoogleMobileAds;
using GoogleMobileAds.Api;
using System;
public class admobScript : MonoBehaviour {
	private BannerView bannerView;
	private InterstitialAd interstitial;
	void Start()
	{
		RequestBanner ();
		RequestInterstitial ();
	}
	private void RequestBanner()
	{
		#if UNITY_EDITOR
		string adUnitId = "unused";
		#elif UNITY_ANDROID
		string adUnitId = "Insertar Su ID aqui";
		#elif UNITY_IPHONE
		string adUnitId = "INSERT_IOS_BANNER_AD_UNIT_ID_HERE";
		#else
		string adUnitId = "unexpected_platform";
		#endif
		// Create a 320x50 banner at the top of the screen.
		bannerView = new BannerView(adUnitId, AdSize.SmartBanner, AdPosition.Top);
		// Register for ad events.
		bannerView.AdLoaded += HandleAdLoaded;
		bannerView.AdFailedToLoad += HandleAdFailedToLoad;
		bannerView.AdOpened += HandleAdOpened;
		bannerView.AdClosing += HandleAdClosing;
		bannerView.AdClosed += HandleAdClosed;
		bannerView.AdLeftApplication += HandleAdLeftApplication;
		// Load a banner ad.
		bannerView.LoadAd(createAdRequest());
	}
	private void RequestInterstitial()
	{
		#if UNITY_EDITOR
		string adUnitId = "unused";
		#elif UNITY_ANDROID
		string adUnitId = "Insertar su ID aqui";
		#elif UNITY_IPHONE
		string adUnitId = "INSERT_IOS_INTERSTITIAL_AD_UNIT_ID_HERE";
		#else
		string adUnitId = "unexpected_platform";
		#endif
		// Create an interstitial.
		interstitial = new InterstitialAd(adUnitId);
		// Register for ad events.
		interstitial.AdLoaded += HandleInterstitialLoaded;
		interstitial.AdFailedToLoad += HandleInterstitialFailedToLoad;
		interstitial.AdOpened += HandleInterstitialOpened;
		interstitial.AdClosing += HandleInterstitialClosing;
		interstitial.AdClosed += HandleInterstitialClosed;
		interstitial.AdLeftApplication += HandleInterstitialLeftApplication;
		// Load an interstitial ad.
		interstitial.LoadAd(createAdRequest());
	}
	// Returns an ad request with custom ad targeting.
	private AdRequest createAdRequest()
	{
		return new AdRequest.Builder()
                        //Borrar estas lineas cuando entren a produccion (Publiquen)
			.AddTestDevice(AdRequest.TestDeviceSimulator)
				.AddTestDevice("0123456789ABCDEF0123456789ABCDEF")
                        //Fin de borrar
				.AddKeyword("game")
				.SetGender(Gender.Male)
				.SetBirthday(new DateTime(1985, 1, 1))
				.TagForChildDirectedTreatment(false)
				.AddExtra("color_bg", "9B30FF")
				.Build();
	}
	public void ShowInterstitial()
	{
		if (interstitial.IsLoaded())
		{
			interstitial.Show();
		}
		else
		{
			print("Interstitial is not ready yet.");
		}
	}
	public void ShowBanner ()
	{
		bannerView.Show ();
	}
	public void HideBanner()
	{
		bannerView.Hide ();
	}
	#region Banner callback handlers
	public void HandleAdLoaded(object sender, EventArgs args)
	{
		print("HandleAdLoaded event received.");
	}
	public void HandleAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
	{
		print("HandleFailedToReceiveAd event received with message: " + args.Message);
	}
	public void HandleAdOpened(object sender, EventArgs args)
	{
		print("HandleAdOpened event received");
	}
	void HandleAdClosing(object sender, EventArgs args)
	{
		print("HandleAdClosing event received");
	}
	public void HandleAdClosed(object sender, EventArgs args)
	{
		print("HandleAdClosed event received");
	}
	public void HandleAdLeftApplication(object sender, EventArgs args)
	{
		print("HandleAdLeftApplication event received");
	}
	#endregion
	#region Interstitial callback handlers
	public void HandleInterstitialLoaded(object sender, EventArgs args)
	{
		print("HandleInterstitialLoaded event received.");
	}
	public void HandleInterstitialFailedToLoad(object sender, AdFailedToLoadEventArgs args)
	{
		print("HandleInterstitialFailedToLoad event received with message: " + args.Message);
	}
	public void HandleInterstitialOpened(object sender, EventArgs args)
	{
		print("HandleInterstitialOpened event received");
	}
	void HandleInterstitialClosing(object sender, EventArgs args)
	{
		print("HandleInterstitialClosing event received");
	}
	public void HandleInterstitialClosed(object sender, EventArgs args)
	{
		print("HandleInterstitialClosed event received");
	}
	public void HandleInterstitialLeftApplication(object sender, EventArgs args)
	{
		print("HandleInterstitialLeftApplication event received");
	}
	#endregion
}

flappyScript

using UnityEngine;
using System.Collections;
public class flappyScript : MonoBehaviour {
	//Declaramos la velocidad inicial del pajaro sea igual a zero, Vector3.zero = 0,0,0
	//1,1,0
	Vector3 velocidad = Vector3.zero;
	//Declaramos un vector que controle la gravedad, no usaremos la fisica de unity
	public Vector3 gravedad;
	//Declaramos un vector que define el salto (aleteo) del pajaro
	public Vector3 velocidadAleteo;
	//Declaramos si se debe aletear, si se toco la pantalla o se presiono espacio
	bool aleteo = false;
	//Declaramos la velocidad maxima de rotacion del pajaro
	public float velocidadMaxima;
	public TubosScript tubo1;
	public TubosScript tubo2;
	private Animator anim;
	private bool juegoTerminado;
	private bool juegoIniciado;
	//Declaramos el objeto que tiene el script de servicios
	public ServiciosGoogleScript servicios;
	public admobScript admob;
	// Use this for initialization
	void Start () {
		anim = this.gameObject.GetComponent<Animator> ();
	}
	// Update is called once per frame
	void Update (){
		//aumenta con el numero de presiones en la pantalla
		int numPresiones = 0;
		foreach (Touch toque in Input.touches) {
			if (toque.phase == TouchPhase.Ended)
				numPresiones++;
		}
		//Si la persona presiona el boton de espacio o hace clic en la pantalla con el mouse, o tocas con el dedo
		if (Input.GetKeyDown(KeyCode.Space) | Input.GetMouseButtonDown(0) | numPresiones > 0) {
			if(juegoTerminado == false)
				aleteo = true;
			juegoIniciado = true;
			tubo1.juegoIniciado = true;
			tubo2.juegoIniciado = true;
		}
	}
	//Este es el update de la fisica, que es ligeramente mas lento que el update del juego
	void FixedUpdate () {
		if(juegoIniciado)
		{
			//A la velocidad le sumamos la gravedad (Para que el pajaro caiga)
			velocidad += gravedad * Time.deltaTime;
			//Si presionaron espacio o hicieron clic
			if (aleteo == true)
			{
				//Que solo sea una vez
				aleteo = false;
				//El vector velocidad recibe el impulso hacia arriba al pajaro
				velocidad.y = velocidadAleteo.y;
			}
			//Hacemos que el pajaro reciba la velocidad (la gravedad lo hace caer mas rapido)
			transform.position += velocidad * Time.deltaTime;
			float angulo = 0;
			if (velocidad.y >= 0) {
				//Cambiamos el angulo si Y es positivo que mire arriba
				angulo = Mathf.Lerp (0, 25, velocidad.y/velocidadMaxima);
			}
			else {
				//Cambiamos el angulo si Y es negativo que mire abajo
				angulo = Mathf.Lerp (0, -75, -velocidad.y/velocidadMaxima);
			}
			//Rotamos
			transform.rotation = Quaternion.Euler (0, 0, angulo);
		}
	}
	//Cada vez que haya una colision con cualquier objeto que tenga un collider se actiavara esta funcion
	//Collider son Box Collider 2D, Circle Collider 2D, etc.
	void OnCollisionEnter2D (Collision2D colision)
	{
		//Si colisionamos con el tubo, que se detengan los tubos
		if(colision.gameObject.name == "TuboAbajo" | colision.gameObject.name == "TuboArriba"|colision.gameObject.name == "Piso")
		{
			//Hacemos que la velocidad de los tubos se haga cero
			tubo1.velocidad = new Vector3(0,0,0);
			tubo2.velocidad = new Vector3(0,0,0);
			anim.SetTrigger("JuegoTerminado");
			juegoTerminado = true;
		}
		if(colision.gameObject.name == "Piso")
		{
			gravedad = new Vector3(0,0,0);
		}
		if(colision.gameObject.name == "TuboAbajo")
		{
			colision.gameObject.GetComponent<BoxCollider2D>().enabled = false;
		}
	}
	void OnGUI()
	{
		GUIStyle customButton = new GUIStyle("button");
		customButton.fontSize = 20;
		int anchoBoton = Screen.width / 3;
		int altoBoton = Screen.height / 7;
		if(juegoTerminado)
		{
			// Dibujamos un boton  de Reinicio
			if (
				GUI.Button(
				new Rect(
				Screen.width / 2 - (anchoBoton / 2),
				(1 * Screen.height / 3) - (altoBoton / 2),
				anchoBoton,
				altoBoton
				),
				"Reiniciar!",customButton
				)
				)
			{
				admob.ShowBanner();
				Application.LoadLevel("escena1");
			}
			if (
				GUI.Button(
				new Rect(
				Screen.width / 2 - (anchoBoton / 2),
				(1.5f * Screen.height / 3) - (altoBoton / 2),
				anchoBoton,
				altoBoton
				),
				"Login!",customButton
				)
				)
			{
				//Nos logueamos a google game services
				servicios.Autenticar();
			}
			if (
				GUI.Button(
				new Rect(
				Screen.width / 2 - (anchoBoton / 2),
				(2 * Screen.height / 3) - (altoBoton / 2),
				anchoBoton,
				altoBoton
				),
				"Puntajes!",customButton
				)
				)
			{
				//Ingresamos puntajes
				servicios.Puntajes(int.Parse(tubo1.puntajes.text));
			}
			if (
				GUI.Button(
				new Rect(
				Screen.width / 2 - (anchoBoton / 2),
				(2.5f * Screen.height / 3) - (altoBoton / 2),
				anchoBoton,
				altoBoton
				),
				"Interestitial!",customButton
				)
				)
			{
				//Ingresamos un logro
				//servicios.Logros(5);
				admob.ShowInterstitial();
				admob.HideBanner();
			}
		}
	}
}

Descarguense el proyecto aquí: https://www.box.net/shared/jhqczcgwkr6f9zvl32xp
Si se topan con este error:
Error building Player: CommandInvokationFailure: Failed to re-package resources. See the Console for details.
C:\Users\User\AppData\Local\Android\android-sdk\build-tools\20.0.0\aapt.exe package –auto-add-overlay -v -f -m -J gen -M AndroidManifest.xml -S “res” -I
Es porque necesitan arrastrar la carpeta google-play-services_lib de C:\Users\(Su Usuario)\AppData\Local\Android\android-sdk\extras\google\google_play_services\libproject a la carpeta Assets/Plugin/Android que esta dentro de Unity, ojo que es una copia:
unity error admobSuerte!

0 0 votes
Article Rating
Subscribe
Notify of
guest
101 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments
Daniel

Hola de nuevo!
Estoy tratando de buscar alguna información de como poner vídeos publicitarios (de 15-30 o 45 segundos) en nuestro admod.
Podrías realizar un vídeo de como se implementa? te lo agradecería infinito!
gracias

Raul

En primer lugar enhorabuena por tus tutoriales.
Ha cambiado en algo el admob en un año aproximadamente porque poniendo en los script lo mismo que tiene tu y que ya probé y funcionaba hace mas o menos un año.
Se pueden mostrar solo interesticial solos?? Ha cambiado la forma algo de admob?? nose jeje ya he puesto hasta un botón para que salga el insteresticial cuando lo pulsa pero nada el caso es que no muestra nada y no da ningun error.
Muchisimas gracias de antemano.

Raul

Buenas julio enhorabuena por los tutorial;
Me gustaría hacerte alguna preguntas si no es molestia:
Después de pasar un año mas o menos de en otro juego con los mismos script no me funciona los interesticial y no se porque ocurre esto el caso es que son exactamente lo mismo y de la misma forma con la que salían.
Habra cambiado la forma de llamar a los interesticial ??? Si solo quiero que solo salgan interesticial se puede o tengo que hacer un hide. banner ???
Muchas gracias de antemano.

Alberto

Buenas!
Hice todo el tutorial, ante todo muchas gracias.
Pero tengo un problema, la aplicación no me genera un Manifest en condiciones en la carpeta Android (yo copio y pego el de la carpeta google-play-services_lib pero no se si ese es el adecuado, ya que creo que no especificas qué debe ir ahi) y me pide que haya una main activity declarada al hacer un build & play.
Necesito ayuda, tanto en la carpeta del plugin de admob como en la services_lib hay un manifest, cual es el correcto? como se genera el Manifest de tu carpeta Android?
Muchas gracias.

Cristian

Ya he encontrado que era lo que fallaba, resulta que el móvil en el que he estado probando la aplicación tiene un antivirus que bloquea los banners y no lo sabía xD. He probado en otros dispositivos y sin problemas. He perdido cuatro días con esta tontería 😛

Cristian

Muy buenas, una pregunta, es necesario tener subido el juego a la Play Store para que aparezcan los banners? Es que no me aparecen en la aplicación que estoy desarrollando (aun no está subida en el Market), tampoco me aparece en la aplicación de Flappy que hiciste.
Muchas gracias, un saludo

jdm

Puede ser que los banners hagan mas lento el juego? Resulta que estoy haciendo un juego en 3d que en mi celular funciona bien, pero cuando le pongo los banners (durante el juego) se hace inutilizable (muy lento), sabes si esto se puede evitar?

quilmes05

Gracias por responder julio, pero no entendí algo, los único código que me da admob son para el adUnityId, en cambio para el para construir el adRequest no me da nada. Osea yo me refiero a esto:
new AdRequest.Builder()
.AddTestDevice(AdRequest.TestDeviceSimulator)
.AddTestDevice(“0123456789ABCDEF0123456789ABCDEF”)
.AddKeyword(“game”)
.SetGender(Gender.Male)
.SetBirthday(new DateTime(1985, 1, 1))
.TagForChildDirectedTreatment(false)
.AddExtra(“color_bg”, “9B30FF”)
.Build();
Lo dejo así?

quilmes05

Excelente tutorial! pero me quedo una simple duda, tengo que modificar la funcion createAdRequest al subir el juego en google play ?
Otra pregunta tonta, ¿ como hago para importar en js o c# una clase que se encuentra en otro direcorio? porque en c# por ejemplo uso el using pero solo si se encuentran en el mismo directorio, cuando esta en otro directorio me tira error.
Muchas gracias!

Virginia

Buenos días, muchas gracias por tus tutoriales, gracias a ti pude hacer un juego por primera vez, aquí está el link:
https://play.google.com/store/apps/details?id=v.Mart.Draguifly
Me ha gustado el hacerlo, tanto que tengo ganas de hacer más y mejorar y hacer más y seguir mejorando. Muchas gracias. Aviso que para el próximo juego seguiré mirando tus tutoriales xD.
Saludos!!

Johnnie

Hola Julian, acabo de terminar mi primer juego y gracias a ti pude ponerle publicidad, te comparto el Link de mi juego:
https://play.google.com/store/apps/details?id=com.JELC.UPUP

Kylland

Muchas gracias por estos tutoriales, sin duda no habría podido hacer mi primer juego sin ellos. Os dejo el link para que le echéis un ojo y me contéis qué os parece, y en qué podría mejorarse. Saludos Julio & Company!!
https://play.google.com/store/apps/details?id=es.KyllandEst.JetSpace

Raul

ok muchas gracias por todo un saludo

Raul

Buenas Julio, Tengo una preguntilla en el codigo del amobScript se puede añadir mas un keyword en la funcion createAdRequest??
Muchas gracias de antemano.

neury

ok te entiendo no hay problema Julio, Gracias.

neury

Creo que si hicieras tutoriales de Android Native Plugin tambien tendria mas personas por que no hay casi nada sobre ese plugin lo compre pero ahora no se como usarlo, si hicieras alguno videos explicando como conectar mi juego a facebook con este plugin y como usar admob te lo agradeceria mucho. 😀

Cristhian182

se puede utilizar un proveedor de publicidad diferente para cada juego en una misma cuenta de desarrollador?

neury

hola estaba tratando de encontrar la carpeta que falta pero no la pude encontrar y busque todo pero tambien me falta las otras dos carpetas 0_o.

Cristhian182

DICES QUE LA CERRADA DE LA CUENTA ES NORMAL … NO LE TIENES MIEDO A ESO ? 🙁 …. PUEDE QUE YO HAGA TODO BN PERO IGUAL PUEDE QUE SE LES DE LA GANA Y LA CIERREN
HAY ALGUN OTRO TIPO DE PUBLICIDAD DONDE NO PASE ESO ?

Raul

ok entonces perfecto muchas gracias por todo.

Raul

Muchas gracias has sido de gran ayuda felicidades por lo que haces,
Una preguntilla mas por lo que tengo entendido admob paga mas por un tipo de auncios que por otro como se yo cuales son los correctos y existe algo que te ayude a saberlo??
Gracias de antemano.

Raul

Buenas julio tendria una pregunta sobre admob:
.AddTestDevice(AdRequest.TestDeviceSimulator)
.AddTestDevice(“0123456789ABCDEF0123456789ABCDEF”)
//Fin de borrar
Sino pongo coloco el numero de serie de el android con el que vas probando no funcionario como testdevice??

Cristhian182

y tambn quisiera saber si se puede hacer algo para minimizar el tamaño del apk
mi juego con lo que tiene pesa por mucho 5 mb y se compila pesa 15 y al instalar pesa 30 mb
estuve investigando sobre un tema que se llama Pro guard que minimiza el tamaño pero no hay mucha informacion . nose si ustedes puedan ayudarme en eso

Cristhian182

buenas Julio
gracias a este tutorial ya le puse un interstitial a mis apps aun no e abierto la cuenta en google play pero quiero abrirla siguiendo bn los pasos.
Quiero saber que precauciones se debe tener en el admob ya que e visto que en muchos blogs se comenta del cierre inesperado de la cuenta sin ninguna razon aparente
y me da miedo cometer errores de novato
gracias

Javier

Hola Julio, gracias por tu respuesta, lo conseguí. Tengo otra duda que creo que puede resultar interesante:
– Tengo una escena de menú para cargar niveles y me gustaría cargar un Interstitial al inicio. El problema viene porque si pulsas muy rápido en el nivel al que quieres jugar, se salta el interstitial. ¿Hay alguna forma de que, si tiene conexión a internet, salga el interstitial antes de cargar la pantalla?
Se me ocurre meter toda la escena en un objeto inactivo, y añadir el script de publicidad a otro objeto que active el resto de la escena con un waitforsecconds. Pero me parece un poco chapucero. También se me ha ocurrido hacer una escena intermedia para la publi, y que la cargue antes de la escena menu. Pero tampoco me convence. ¿Podrías ayudarme?
Muchas gracias.

Javier

Hola Julio, gracias por tu blog.
Tengo un juego a falta de añadir publicidad y publicar. Quería hacer 2 preguntas en una:
1 – ¿Cúal es el primer paso, subir la aplicación o pedir los códigos de admob? Es decir, ¿Creo el juego sin subirlo y entonces ya puedo buscarlo en admob para pedir los códigos, o cuál es el orden correcto?
2 – He leído en la política de privacidad de admob que no se puede hacer click en los anuncios de tus juegos, pero se pueden solicitar “anuncios de prueba” en fase de producción. ¿Qué tendría que cambiar en el código para que me envíe anuncios de prueba en lugar de reales?
Muchas gracias.

Raul

Antes de nada muchas gracias por el tutorial.
Pero no se porque en mi caso no se muetra el insterticial , segui todos los pasos del tutorial y me muestra perfecto el banner pero tengo puesto que al inicio de cada escena me muestre un intersticial pero no me sale. El intersticial se puede posicionar donde uno necesite o solo se puede hacer en un sitio determinado??.

Marco Encinos Lopez

Hola julio, he visto tus tutoriales y son muy buenos, me han servido para poder crear mi juego y me gustaria que la juegues
https://play.google.com/store/apps/details?id=com.Encinos.games.CorreYax
Espero sigas subiendo mas videos, gracias…

Daniel

gracias, si era yo. otra pregunta, en que parte del juego pones el interstitial? yo lo puse en el boton reiniciar el juego, antes de Application.LoadLevel(Application.loadedLevel) y me suspendieron el juego en playstore:
“REASON FOR REMOVAL: Violation of the Ad Policy:
* A prominent and accessible target must be made available to users in any interstitial ad so they may dismiss the ad without penalty or inadvertent click-through.
After a regular review, we have determined that your app causes users to inadvertently click-through ads to access the app. This violates the Ad Policy. Please refer to the ad walls policy help article for more information.”

Javier López

Me sale el siguiente error:
Error building Player: CommandInvokationFailure: Failed to recompile android resource files. See the Console for details.
C:\Program Files (x86)\Java\jre1.8.0_25\bin\javac.exe -bootclasspath “C:/Users/jlopez/Desktop/adt-bundle-windows-x86_64-20140702/sdk/platforms/android-21\android.jar” -d “C:\Users\jlopez\Documents\Pong 2D\Temp\StagingArea\bin\classes” -source 1.6 -target 1.6 -encoding ascii “com\google\android\gms\R.java” “es\JaDaRa\R.java”
stderr[
]
stdout[
]
Ayuda por favor!!!

Mad

No hat mucha informacion el el web. Pero Trate anadir DontDestroyOnLoad (this); a los dos cripts pero comoquiera se tarda igual..

Mad

Discula todo el garabato. Borras si kieres 🙂
Solo queria agregar que en el juego brinco de level a level. I siempre tarda 5-10 segundos para que el show interstitial botton funcione :(..

Mad

Pense que cuando le dices admob.ShowInter, el inter ya avia side requested (request interstitial/interstitial loaded)
Pero parece que empiesa desde request interstitial cuando oprimes el boton?
La verdad que no se. Solo quisiera que saliera mas rapido 🙁
Gracias. 🙂

Mad

Hola. Gracias x el tutotial. Disculpa mi espanol. Con tu ejemplo,
Pude hacer que salgan tus botones i salgan banner/interstitials cuando presional el boton.
Pero interstitial tarda como 7-10 segundos para salir. Si el level empiesa, Tienes que esperarte 7-10 segundos para que el boton de interstitial funcione. Temo que asi lo veran pocos.
Lo que estoy tratando de hacer es que salga un interstitial inmediatamente en game over level. Pero tarda mucho en salir el inter.
No ay forma de que el interstitial salga inmediatamente?
No se casi nada pero estado aprendiendo 🙂
Gracias camarada 🙂

danisvex

hola muy buen el tutorial! una pregunta, cuando cambio de escena tengo que ocultar o destruir el banner o teoricamente se tendria que eliminar solo? por que por ahi salgo de una escena y el banner sigue, o sino cuando salgo de una escena antes que cargue el banner me lo carga en otra escena que no tendria que tener. Otra pregunta: no se podria poner en un objeto global el admobscript? por que tarda mucho en cargar cuando se cambia de escena

Daniel

gracias muy buen tuto! por las dudas si a alguien le aparece el error: “NullRefecencesException: Object references not set to an instance…” puede ser por el orden de ejecucion de los script, primero se tiene que ejecutar el admobScript y luego el FlappyScript, digo nomas por que me llevo un buen tiempo encontrar el error (Edit>Project Settings>Script Execution Order)

Oscar

Amigo te quiero mostrar el juego que termine, gracias a tu ayuda con los anuncios se logro mi meta.
https://play.google.com/store/apps/details?id=com.SmallsoftStudio.MemoLight
Sigue con tus videos, la verdad motivan mucho ademas que eres gracioso.

[…] Colocar publicidad de Admob a tu juego […]

[…] Colocar publicidad de Admob a tu juego […]

[…] Colocar publicidad de Admob a tu juego […]

James

Espero y me aconsejes amigo:’
Se puede usar el mismo bloque de anuncios que se genera en Admob en distintas aplicaciones, o es necesario crear un bloque por aplicación? Es decir, puedo poner el en mi aplicación 2 el código de anuncios de la aplicación 1?

nicolas

Hola Julio, tengo un problema con Admob, resulta que no puedo usar google play services y admob juntos, la unica forma de utilizar los servicios de google es borrando toda linea de codigo de admob. no se si se entiende lo que digo. tendras idea de lo que puede ser? tengo el sdk actualizado. gracias de antemano. un saludo.

heri

Me sigue apareciendo este error :Error building Player: CommandInvokationFailure: Failed to re-package resources. See the Console for details.
C:\Users\Heriberto\android-sdk-windows\build-tools\18.0.1\aapt.exe package –auto-add-overlay -v -f -m -J gen -M AndroidManifest.xml -S “res” -I “C:/Users/Heriberto/android-sdk-windows/platforms/android-18\android.jar” -F bin/resources.ap_
stderr[

heri

Bueno ya vi que alomejor es el mismo error que tu marcas arriba pero aparte no me aparecen las carpetas que tu descargas de admob solo algunas pero no todas.

heri

Error building Player: CommandInvokationFailure: Failed to re-package resources. See the Console for details.
C:\Users\Heriberto\Desktop\android-sdk-windows\build-tools\18.0.1\aapt.exe package –auto-add-overlay -v -f -m -J gen -M AndroidManifest.xml -S “res” -I “C:/Users/Heriberto/Desktop/android-sdk-windows/platforms/android-18\android.jar” -F bin/resources.ap_
stderr[
AndroidManifest.xml:9: error: Error: No resource found that matches the given name (at ‘value’ with value ‘@integer/google_play_services_version’).
]
stdout[
Configurations:
(default)
hdpi
ldpi
xhdpi
xxhdpi
Files:
drawable\app_icon.png
Src: () res\drawable\app_icon.png
Src: (hdpi) res\drawable-hdpi\app_icon.png
Src: (ldpi) res\drawable-ldpi\app_icon.png
Src: (xhdpi) res\drawable-xhdpi\app_icon.png
Src: (xxhdpi) res\drawable-xxhdpi\app_icon.png
values\strings.xml
Src: () res\values\strings.xml
AndroidManifest.xml
Src: () AndroidManifest.xml
Resource Dirs:
Type drawable
drawable\app_icon.png
Src: () res\drawable\app_icon.png
Src: (hdpi) res\drawable-hdpi\app_icon.png
Src: (ldpi) res\drawable-ldpi\app_icon.png
Src: (xhdpi) res\drawable-xhdpi\app_icon.png
Src: (xxhdpi) res\drawable-xxhdpi\app_icon.png
Type values
values\strings.xml
Src: () res\values\strings.xml
Including resources from package: C:\Users\Heriberto\Desktop\android-sdk-windows\platforms\android-18\android.jar
applyFileOverlay for drawable
applyFileOverlay for layout
applyFileOverlay for anim
applyFileOverlay for animator
applyFileOverlay for interpolator
applyFileOverlay for xml
applyFileOverlay for raw
applyFileOverlay for color
applyFileOverlay for menu
applyFileOverlay for mipmap
Processing image: res\drawable\app_icon.png
Processing image: res\drawable-hdpi\app_icon.png
Processing image: res\drawable-ldpi\app_icon.png
(processed image res\drawable-ldpi\app_icon.png: 96% size of source)
Processing image: res\drawable-xhdpi\app_icon.png
(processed image res\drawable\app_icon.png: 96% size of source)
Processing image: res\drawable-xxhdpi\app_icon.png
(processed image res\drawable-hdpi\app_icon.png: 97% size of source)
(processed image res\drawable-xhdpi\app_icon.png: 97% size of source)
(processed image res\drawable-xxhdpi\app_icon.png: 97% size of source)
(new resource id app_icon from drawable\app_icon.png #generated)
(new resource id app_icon from hdpi\drawable\app_icon.png #generated)
(new resource id app_icon from ldpi\drawable\app_icon.png #generated)
(new resource id app_icon from xhdpi\drawable\app_icon.png #generated)
(new resource id app_icon from xxhdpi\drawable\app_icon.png #generated)
]

heri

Disculpa julio, cuanto me cobrarias para ponerle publicidad a mi primer juego echo con unity esque no puedo ponerle.

Rodrigo

Oye brother es necesario llamar al script de Admob en cada una de las escenas del juego o solo en una?

Adrian

Por fin termine (mi primer juego), gracias a tus vídeos. A falta de no contar con un móvil adecuado para probarlo, te quisiera pedir (si no es molestia, y si tienes tiempo) probar mi pequeño juego. Me gustaría que me dijeras si funciona la publicidad y si existe algún impedimento para jugar. Te voy a agregar en la descripción de la App para darte crédito por tus videos. Bueno aquí el link:
https://play.google.com/store/apps/details?id=com.SmallsoftStudio.AeroplaneSimulator

Héctor

Mil perdones por tardar en contestar.
Al final lo que hice fue quitar toda la basura que fuí metiendo para probar, de otros tutoriales y demás, y volví a hacer desde cero el tutorial tuyo .. y me funcionó a las mil maravillas, la verdad esque me has salvado.
Tendré en cuenta tu último mensaje para el próximo juego 😉
Muchas gracias y un saludo!

Héctor

¿Tendre el problema en el AndroidManifest.xml? cuando corro dándole al play con el unity remote, me dice que el código entra por donde tiene que entrar, poniendo “Debug.log()”, pero haciendo un build and run, para que no corra en el PC, que es donde tendría que salir la publicidad, no sale nada .. tampoco me salta ningun error 🙁