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:
Suerte!
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
No se puede amenos que uses el mediador de admob y pongas videos de otras empresas, nunca lo hice la verdad no creo que pueda ayudarte 🙁
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.
🙂
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.
Bueno Google Play Ads ha subido un nuevo plugin, quizás este vídeo o código ya no funciona, la verdad es que no he actualizado admob todavía y no he probado e nuevo Admob cuando lo haga actualizaré este código 🙂
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.
Ya hay una nueva version del plugin de hace 6 dias https://github.com/googleads/googleads-mobile-unity/releases/tag/v3.0.1 aca su guia https://developers.google.com/admob/android/games#unity
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 😛
Suele suceder 🙂 Genial que lo hayas solucionado
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
No para nada, revisa eso, de repente no se ha activado tu cuenta de Admob, o algo está mal configurado
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?
Bueno eso si no podría ayudarte yo me limito a hacer juegos 2D que no consumen tantos recursos, no me ha pasado lo que me comentas
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í?
Puedes borrarle el TestDevice si gustas, pero no influye mucho la verdad, quizas el keyword
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!
Con el createAdRequest pues solo tienes que colocar tu codigo que te da admob(los números) y sacar el mio, despues solo te queda subirlo a google play, el using no es para usar clases en C# no necesitas usarla de frente puedes llamar a una clase sin problemas, solo fijate que este inicializada en algun objeto de unity, a menos que te refieras a las clases Serializables, ese es otro tema que creo todavía no he enseñado
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!!
Ya está en la pagina de face 😀 https://www.facebook.com/SingleTechGames
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
Lo pondré en facebook, suerte con el juego 🙂 https://www.facebook.com/SingleTechGames
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
Se ve muy bueno 🙂
No recuerdo si lo puse en la pagina de face, pero ahi va de nuevo 😛 https://www.facebook.com/SingleTechGames
ok muchas gracias por todo un saludo
De nada 🙂
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.
Hasta donde tengo entendido si, me imagino que lo separas por comas o le agregas mas .AddKeyword()
ok te entiendo no hay problema Julio, Gracias.
🙂
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. 😀
Hola neury, el plugin que me mencionas tiene un coste asociado, yo solo trabajo con herramientas free que cualquiera puede usar 🙂 los tutoriales son dirigidos a personas que recien inician y no tienen mucho dinero que invertir
se puede utilizar un proveedor de publicidad diferente para cada juego en una misma cuenta de desarrollador?
Claro que sí yo tengo hasta 3
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.
En el proyecto que has descargado de esta pagina faltan carpetas? intenta volver a importar el proyecto de repente aparecen, eso que me dices es muy raro
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 ?
Bueno siempre hay un miedo pero tambien utilizo revmob y leadbolt, pronto haré un par de videos enseñando a configurarlos 🙂
ok entonces perfecto muchas gracias por todo.
de nada 🙂
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.
Bueno los anuncios no dependen de ti, es la empresa la que los manda, tu no puedes forzar a algun tipo de anuncio ni nada de eso
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??
claro que si funciona, pero vas a recibir ads de pago, asi que ten bastante cuidado
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
Este es un buen tutorial para reducir el tamaño de un build ya sea apk u otro http://docs.unity3d.com/Manual/ReducingFilesize.html
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
Bueno intenta crear otra cuenta con otro correo de gmail y testear con este, cuando veas q esta todo bien usa la cuenta oficial, la mayoria de problemas estan al testear pero si en algun momento admob t cierra la cuenta es normal, pasa en adsense tambien, y no hya bmucho que se pueda hacer
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.
En el admobscript vas a ver public void HandleInterstitialClosed(object sender, EventArgs args)
{
print(“HandleInterstitialClosed event received”);
}
es una funcion que se ejecuta solo cuando se cierra el interstitial puedes iniciar tu menu solo cuando se cierre el interstitial, lo cual sucede cuando se presiona la X o cuando se hace clic en el ad
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.
Hola Javier, lo primero sería pedir los códigos de admob, y de la segunda pregunta solo tienes que cambiar esta linea de código: .AddTestDevice(AdRequest.TestDeviceSimulator)
.AddTestDevice(“0123456789ABCDEF0123456789ABCDEF”)
//Fin de borrar
y colocar el numero de serie de el android con el que vas probando
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??.
el interstitial es llamado cuando lo necesites, recuerda darle tiempo a cargar al ad y no cerrar muy rapido la escena
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…
Hola Marco ahora lo pongo el página de facebook 🙂 https://www.facebook.com/SingleTechGames
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.”
Me parece que como lo pones antes del reinicio, cuando estas jugando aprece el interstitial, no en la pausa o al final sino al medio del juego, eso esta penalizado por admob
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!!!
No me ha salido un error parecido hasta ahora pero he leido en la web que instalando el JRE6 de java lo arregla, el de 32 o 64 bits
No hat mucha informacion el el web. Pero Trate anadir DontDestroyOnLoad (this); a los dos cripts pero comoquiera se tarda igual..
hola mad, ¿que idioma hablas? puedo contestarte en ingles y estoy aprendiendo portugues si lo necesitas, escribeme en mi página de contacto, http://singletechgames.com/contacto/ ahora para que el interestitial salga rapido primero debe tener un tiempo de carga es decir uno hace un request antes de iniciar el nivel y un show despues de terminarlo, es la unica forma de que salga como tu quieres, la razon es que al momento de hacer el request envia la petición al servidor, este procesa la petición y envia la imagen al celular, no es un proceso rapido, toma su tiempo, subir la peticion, bajar la imagen, depende mucho de la velocidad de internet
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 :(..
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. 🙂
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 🙂
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
Creo que me escribiste lo mismo en youtube pero por si acaso, tienes que darle un tiempo al banner para mostrarse, porque si haces un hide sin que se haya cargado el showbanner es como hacerlo un objeto vacio y hacerlo despues ya no sirve. El admobScript si puede hacer global solo debes anexar este código al Start() DontDestroyOnLoad (transform.gameObject);
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)
Excelente comentario. Gracias por compartirlo 🙂
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.
Ya lo puse en la página de facebook 🙂
[…] Colocar publicidad de Admob a tu juego […]
[…] Colocar publicidad de Admob a tu juego […]
[…] Colocar publicidad de Admob a tu juego […]
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?
Se recomienda que no, porque cada uno genera ads para juegos distintos que fueron descargados de distintos lugares, puede ser que haya algun problema con Google
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.
Me sucedio lo mismo con Amazon circle y Admob, al final le coloque swarmconnect, super rapido y super sencillo, junto con admob
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[
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.
¿Qué carpetas de Admob te faltan?, no entiendo esto que pusiste.
Ojo que antes de ponerle Admob a este juego en el video previo le coloque Google Game Services, fijate en eso de repente puedes probar agregando el plugin anterior
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)
]
Disculpa julio, cuanto me cobrarias para ponerle publicidad a mi primer juego echo con unity esque no puedo ponerle.
Mandame un mensaje con el error a mi correo o publicalo aquí y vemos como lo solucionamos 😉
Oye brother es necesario llamar al script de Admob en cada una de las escenas del juego o solo en una?
Depende de como lo quieras utilizar, si despues de cada escena quieres que se muestre un banner o un interestitial, ejecutalo en cada escena, si quieres que se mantenga tienes que trabajar con variables y clases globales
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
Ya está en mi facebook 🙂 https://www.facebook.com/SingleTechGames
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!
Ok Suerte!
¿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 🙁
Fijate en hacer esto, abre el modo consola (En windows es ejecutar -> cmd) en ese modo entras hasta appdata/local/android/android-sdk/platform-tools y pones adb logcat y le das enter, en ese momento puedes ver todos los errores que se producen en Unity y porque el Ad no está funcionando