Unity Ads: Como Monetizar Jogo Mobile com Rewarded

Guia de Unity Ads para monetizar jogo mobile feito na Unity: ativar no dashboard, formatos rewarded, interstitial e banner, código C# real e comparação com AdMob.
Se o seu jogo mobile foi feito na Unity, a Unity Ads é o caminho de menor atrito para começar a monetizar com anúncios: o SDK já conversa com a engine, a conta vive no mesmo Unity Dashboard que você já usa, e dá para ter um vídeo rewarded rodando em uma tarde. Este guia cobre o caminho completo de usar Unity Ads para monetizar jogo mobile na Unity: ativar o serviço no dashboard, entender os formatos (rewarded, interstitial e banner), integrar com código C# real usando o SDK, posicionar os anúncios sem matar a retenção, e entender como isso se compara ao AdMob.
Não vou prometer número nenhum de receita, porque eles variam demais por país, formato e época para serem úteis. O que não varia é a mecânica, e é nela que este texto foca.
Ativando a Unity Ads no Unity Dashboard
A Unity Ads não precisa de um SDK baixado à parte: ela é um pacote de serviços da própria engine. O caminho comum é:
- Abra o Project Settings > Services (ou a janela Services pelo menu) e conecte seu projeto a uma organização Unity. Isso cria o vínculo entre o editor e o dashboard.
- Ative o serviço Ads / Monetization. Ao fazer isso, a Unity gera um Game ID separado para Android e para iOS. Guarde os dois, porque o código precisa escolher o certo por plataforma.
- No Unity Dashboard (o painel web), vá em Monetization e crie os Ad Units. Cada ad unit é um "slot" de um formato específico: um para rewarded, um para interstitial, um para banner. Você dá um ID para cada, e é esse ID que o código chama na hora de carregar o anúncio.
Durante o desenvolvimento, mantenha o Test Mode ligado. Ele faz a Unity servir anúncios de teste, que são seguros para clicar à vontade. Clicar nos próprios anúncios reais é a forma mais rápida de ser banido da rede por fraude de cliques, então só desligue o Test Mode quando for publicar.
Com o serviço ativo e os ad units criados, o resto é código.
Os três formatos e quando usar cada um
A Unity Ads oferece os mesmos três formatos de sempre, e a ordem de quanto cada um costuma render é a mesma de qualquer rede.
Rewarded (vídeo com recompensa). O jogador escolhe assistir a um vídeo de até 30 segundos em troca de algo: moedas, uma vida extra, dobrar a recompensa da fase, um continue. É o formato que mais paga por impressão, justamente porque o jogador optou por ver e o anunciante valoriza essa atenção. É também o único que o jogador tende a gostar, porque entrega valor em vez de atrapalhar. Se você só for integrar um formato, integre esse.
Interstitial (tela cheia). Um anúncio de tela inteira, em vídeo ou imagem, que aparece numa transição natural: fim de fase, game over, antes de voltar ao menu. Rende um meio-termo. O erro clássico é mostrar com frequência demais ou no meio da ação; o acerto é respeitar a transição e deixar um intervalo mínimo entre um e outro.
Banner. A faixa fixa no topo ou na base da tela. Rende pouco por impressão e compensa só pelo volume de telas vistas. Funciona em menu e em jogos de sessão longa; atrapalha em gameplay que precisa da tela inteira.
A estratégia que funciona para a maioria dos jogos casuais é rewarded como motor principal da receita, interstitial com parcimônia nas transições, e banner só se o layout comportar sem incomodar. Essa lógica de formato por formato vale para qualquer rede, e eu destrincho ela com mais calma em anúncios em jogo mobile.
Integrando o SDK: inicialização
O SDK precisa inicializar uma vez, cedo no ciclo de vida do jogo, antes de qualquer pedido de anúncio. O padrão é um script numa cena de boot que implementa o listener de inicialização e escolhe o Game ID pela plataforma:
using UnityEngine;
using UnityEngine.Advertisements;
public class AdsInitializer : MonoBehaviour, IUnityAdsInitializationListener
{
[SerializeField] string _androidGameId;
[SerializeField] string _iOSGameId;
[SerializeField] bool _testMode = true;
string _gameId;
void Awake()
{
InitializeAds();
}
public void InitializeAds()
{
#if UNITY_IOS
_gameId = _iOSGameId;
#elif UNITY_ANDROID
_gameId = _androidGameId;
#endif
Advertisement.Initialize(_gameId, _testMode, this);
}
public void OnInitializationComplete()
{
Debug.Log("Unity Ads inicializado.");
}
public void OnInitializationFailed(UnityAdsInitializationError error, string message)
{
Debug.LogError($"Falha ao inicializar: {error} - {message}");
}
}
Os campos _androidGameId e _iOSGameId você preenche no Inspector com os IDs que o dashboard gerou. O _testMode deixa em true enquanto desenvolve. A diretiva #if UNITY_IOS resolve a plataforma em tempo de compilação, então o build de cada loja já sai com o ID certo.
Integrando o SDK: mostrar um rewarded
Com o SDK inicializado, o rewarded segue o padrão carrega-antes, mostra-depois. Você carrega o anúncio com antecedência (ao entrar na fase, por exemplo) para que ele esteja pronto na hora em que o jogador tocar o botão. O script implementa dois listeners: um para o load e um para o show.
using UnityEngine;
using UnityEngine.Advertisements;
public class RewardedAds : MonoBehaviour, IUnityAdsLoadListener, IUnityAdsShowListener
{
[SerializeField] string _androidAdUnitId = "Rewarded_Android";
[SerializeField] string _iOSAdUnitId = "Rewarded_iOS";
string _adUnitId;
void Awake()
{
#if UNITY_IOS
_adUnitId = _iOSAdUnitId;
#else
_adUnitId = _androidAdUnitId;
#endif
}
// Chame cedo (ex.: ao abrir a fase) para o anúncio já estar pronto.
public void LoadAd()
{
Advertisement.Load(_adUnitId, this);
}
// Chame quando o jogador tocar o botão de recompensa.
public void ShowAd()
{
Advertisement.Show(_adUnitId, this);
}
public void OnUnityAdsShowComplete(string adUnitId, UnityAdsShowCompletionState state)
{
if (adUnitId == _adUnitId && state == UnityAdsShowCompletionState.COMPLETED)
{
// O jogador assistiu até o fim: entregue a recompensa AQUI.
Debug.Log("Recompensa liberada.");
LoadAd(); // recarrega para o próximo show
}
}
public void OnUnityAdsAdLoaded(string adUnitId) { }
public void OnUnityAdsFailedToLoad(string adUnitId, UnityAdsLoadError error, string message) { }
public void OnUnityAdsShowFailure(string adUnitId, UnityAdsShowError error, string message) { }
public void OnUnityAdsShowStart(string adUnitId) { }
public void OnUnityAdsShowClick(string adUnitId) { }
}
O ponto crítico está no OnUnityAdsShowComplete: só entregue a recompensa quando o state for COMPLETED. Se o jogador fechar o vídeo no meio, o estado vem como SKIPPED e ele não ganha nada, que é exatamente o contrato do rewarded. Dar a recompensa sem checar isso é o bug que mais aparece em integração de iniciante, e ele transforma o rewarded num botão grátis de moedas.
Repare que chamo LoadAd() de novo dentro do complete. Um ad unit precisa ser recarregado depois de exibido; sem isso, o segundo clique no botão não mostra nada.
Posicionamento: onde o anúncio rende sem irritar
Código funcionando é metade do trabalho. A outra metade é decidir quando o anúncio aparece, e é aí que a maioria dos jogos deixa dinheiro na mesa ou perde o jogador.
Algumas regras que seguram a retenção:
- Rewarded sempre opcional e com valor claro. O botão tem que dizer o que o jogador ganha ("assista e dobre suas moedas"). Rewarded que o jogador não entende por que assistiria não é assistido.
- Interstitial só em transição, nunca no meio da ação. Fim de fase e game over são momentos em que o jogador já parou de jogar; é ali que o anúncio de tela cheia incomoda menos. E respeite um intervalo mínimo entre interstitials, senão vira castigo.
- Nunca o primeiro contato. Deixe o jogador jogar algumas sessões antes do primeiro interstitial. Anúncio na cara nos primeiros minutos derruba a retenção de D1, e retenção baixa seca a receita de anúncio no médio prazo, porque receita de anúncio depende de o jogador voltar.
Essa última é a parte que o iniciante subestima: anúncio mal posicionado é um tiro no pé duplo, rende pouco hoje e mata a receita de amanhã junto com o jogador.
Unity Ads versus AdMob: como se comparam
A pergunta inevitável é se vale Unity Ads ou AdMob, a rede do Google. A resposta honesta é que não existe vencedor fixo. O eCPM de cada rede varia por país, formato e época, e uma ganha da outra dependendo do leilão específico daquele dia.
O que a Unity Ads tem a favor para quem usa Unity é a integração: nenhum SDK externo para configurar, o dashboard é o mesmo, e a base de anunciantes da Unity é forte justamente em jogos, o que casa com o público. O AdMob tem a favor o alcance imenso da rede do Google e um histórico longo de fill rate alto.
Mas a decisão madura não é escolher uma. É usar mediação: colocar Unity Ads e AdMob (e outras) competindo pela mesma impressão, de forma que a rede que pagar mais naquele instante exiba o anúncio. A camada de mediação da própria Unity para isso é a LevelPlay (a antiga ironSource, que a Unity comprou). Começar com o Unity Ads sozinho é perfeitamente válido; a mediação entra quando o volume justifica o trabalho de configurar várias redes. Eu explico o conceito de mediação em detalhe em mediação de anúncios em jogo mobile, e comparo o que cada rede costuma pagar em qual rede de anúncios paga mais.
Vale a ressalva de sempre: anúncio é um dos caminhos de monetização, não o único. Para quem está mapeando como de fato tirar receita de um jogo na loja, reuni o panorama em ganhar dinheiro com jogos na Play Store.
E se você ainda está escolhendo a engine
Este guia assume que seu jogo já está na Unity, e aí a Unity Ads é uma vantagem concreta de ecossistema. Mas se você ainda nem decidiu em que engine começar, essa escolha pesa mais no dia a dia do desenvolvimento do que na parte de anúncios, porque tanto Unity quanto Godot conseguem monetizar com as mesmas redes. A comparação completa de produtividade, linguagem e curva de aprendizado está em Godot vs Unity, e ela te ajuda a decidir antes de escrever a primeira linha.
No fim, a receita de boas práticas da Unity Ads é curta: inicialize cedo, carregue o rewarded antes de precisar, só entregue a recompensa no estado COMPLETED, segure o interstitial para as transições, e meça a retenção com o mesmo cuidado que você mede o eCPM. O jogo que acerta esse equilíbrio paga as contas; o que enche a tela de anúncio perde o jogador antes da primeira impressão que valeria a pena.
Perguntas frequentes
Unity Ads é grátis para usar?
Sim. O SDK e a conta no Unity Dashboard não têm custo. A Unity fica com uma parte da receita que o anunciante paga, igual a qualquer rede de anúncios, e você recebe o resto. Não há mensalidade nem taxa de setup para começar a exibir anúncios no seu jogo.
Qual a diferença entre Unity Ads e LevelPlay?
Unity Ads é a rede de anúncios própria da Unity. LevelPlay é a camada de mediação (ex-ironSource, comprada pela Unity) que coloca a Unity Ads para competir com outras redes como AdMob e AppLovin no mesmo leilão. Para começar, o SDK do Unity Ads sozinho já funciona; a mediação com LevelPlay faz sentido quando o volume justifica disputar cada impressão entre várias redes.
Unity Ads paga mais que o AdMob?
Depende do país do jogador, do formato e da época. Não existe vencedor fixo. Na prática, quem leva a monetização a sério não escolhe um ou outro: usa mediação para as duas redes brigarem pela mesma impressão, e a que pagar mais naquele leilão exibe o anúncio.


