Monetizing your Unity game through ads is a popular way to generate revenue. Rewarded ads, in particular, are effective because they allow players to voluntarily watch an ad in exchange for in-game rewards. Here's a step-by-step guide on how to add rewarded ads to your Unity game using Google AdMob.
1- Set Up Google AdMob Account
- Create an AdMob account if you haven't already.
- Create a new ad unit specifically for rewarded ads.
2- Import Google Mobile Ads Unity Package
- Open your Unity project.
- Download and import the Google Mobile Ads Unity Package.
3- Create C# script for the Rewarded ad.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using GoogleMobileAds;
using GoogleMobileAds.Api;
using System;
public class Rewarded : MonoBehaviour
{
// These ad units are configured to always serve test ads.
#if UNITY_ANDROID
private string _adUnitId = "ca-app-pub-3940256099942544/5224354917";
#elif UNITY_IPHONE
private string _adUnitId = "ca-app-pub-3940256099942544/5224354917";
#else
private string _adUnitId = "unused";
#endif
private RewardedAd rewardedAd;
public void Start()
{
// Initialize the Google Mobile Ads SDK.
MobileAds.Initialize((InitializationStatus initStatus) =>
{
// This callback is called once the MobileAds SDK is initialized.
LoadRewardedAd();
});
}
public void LoadRewardedAd()
{
// Clean up the old ad before loading a new one.
if (rewardedAd != null)
{
rewardedAd.Destroy();
rewardedAd = null;
}
Debug.Log("Loading the rewarded ad.");
// create our request used to load the ad.
var adRequest = new AdRequest();
adRequest.Keywords.Add("unity-admob-sample");
// send the request to load the ad.
RewardedAd.Load(_adUnitId, adRequest,
(RewardedAd ad, LoadAdError error) =>
{
// if error is not null, the load request failed.
if (error != null || ad == null)
{
Debug.LogError("Rewarded ad failed to load an ad " +
"with error : " + error);
return;
}
Debug.Log("Rewarded ad loaded with response : "
+ ad.GetResponseInfo());
rewardedAd = ad;
RegisterEventHandlers(rewardedAd);
});
}
public void ShowRewardedAd()
{
const string rewardMsg =
"Rewarded ad rewarded the user. Type: {0}, amount: {1}.";
if (rewardedAd != null && rewardedAd.CanShowAd())
{
rewardedAd.Show((Reward reward) =>
{
// TODO: Reward the user.
Debug.Log(String.Format(rewardMsg, reward.Type, reward.Amount));
});
}
}
private void RegisterEventHandlers(RewardedAd ad)
{
// Raised when the ad is estimated to have earned money.
ad.OnAdPaid += (AdValue adValue) =>
{
Debug.Log(String.Format("Rewarded ad paid {0} {1}.",
adValue.Value,
adValue.CurrencyCode));
};
// Raised when an impression is recorded for an ad.
ad.OnAdImpressionRecorded += () =>
{
Debug.Log("Rewarded ad recorded an impression.");
};
// Raised when a click is recorded for an ad.
ad.OnAdClicked += () =>
{
Debug.Log("Rewarded ad was clicked.");
};
// Raised when an ad opened full screen content.
ad.OnAdFullScreenContentOpened += () =>
{
Debug.Log("Rewarded ad full screen content opened.");
};
// Raised when the ad closed full screen content.
ad.OnAdFullScreenContentClosed += () =>
{
Debug.Log("Rewarded ad full screen content closed.");
LoadRewardedAd();
};
// Raised when the ad failed to open full screen content.
ad.OnAdFullScreenContentFailed += (AdError error) =>
{
Debug.LogError("Rewarded ad failed to open full screen content " +
"with error : " + error);
LoadRewardedAd();
};
}
}
If you want to use it in another script add this to the Rewarded last script :
public static Rewarded Inctance;
public void Start()
{
if (Inctance == null)
{
Inctance = this;
}
else
{
Destroy(this.gameObject);
}
}
In the last, To call the rewarded script in another script after or before some events
write this:-
Rewarded.Inctance.ShowRewardedAd();
Remember to follow AdMob's policies and guidelines to ensure your ads comply with their rules. Additionally, always test your ads on real devices to ensure a smooth user experience.
That's it! following these steps, you can successfully add rewarded ads to your Unity game.
⭐Happy coding⭐
Tags:
Unity